diff options
author | Internet Software Consortium, Inc <@isc.org> | 2007-09-07 14:14:18 -0600 |
---|---|---|
committer | LaMont Jones <lamont@debian.org> | 2007-09-07 14:14:18 -0600 |
commit | 038cb638ae3a14da41169b1d0f5cb1c992984084 (patch) | |
tree | 9a21ac5db0b0398077dc199baf19edeeed12fa0e | |
parent | 68f4891e81341027897d9351da35c4073f3f9d41 (diff) | |
download | bind9-038cb638ae3a14da41169b1d0f5cb1c992984084.tar.gz |
9.2.1rc1
302 files changed, 37672 insertions, 6421 deletions
@@ -1,3 +1,173 @@ + --- 9.2.1rc1 released --- + +1207. [bug] libbind: getaddrinfo() could call freeaddrinfo() with + an invalid pointer. + +1206. [bug] SERVFAIL and NOTIMP responses to a EDNS should trigger + a non-EDNS retry. + +1205. [bug] OPT, TSIG and TKEY cannot be used to set the "class" + of the message. [RT #2449] + +1204. [bug] libbind: res_nupdate() failed to update the name + server addresses before sending the update. + +1201. [bug] Require that if 'callbacks' is passed to + dns_rdata_fromtext(), callbacks->error and + callbacks->warn are initialized. + +1200. [bug] Log 'errno' that we are unable to convert to + isc_result_t. [RT #2404] + +1198. [bug] OPT printing style was not consistant with the way the + header fields are printed. The DO bit was not reported + if set. Report if any of the MBZ bits are set. + +1197. [bug] Attempts to define the same acl multiple times were not + detected. + +1196. [contrib] update mdnkit to 2.2.3. + +1195. [bug] Attempts to redefine builtin acls should be caught. + [RT #2403] + +1194. [bug] Not all duplicate zone definitions were being detected + at the named.conf checking stage. [RT #2431] + +1193. [bug] Best effort parsing didn't handle packet truncation. + +1191. [bug] A dynamic update removing the last non-apex name in + a secure zone would fail. [RT #2399] + +1189. [bug] On some systems, malloc(0) returns NULL, which + could cause the caller to report an out of memory + error. [RT #2398] + +1188. [bug] Dynamic updates of a signed zone would fail if + some of the zone private keys were unavailable. + +1186. [bug] isc_hex_tobuffer(,,length = 0) failed to unget the + EOL token when reading to end of line. + +1185. [bug] libbind: don't assume statp->_u._ext.ext is valid + unless RES_INIT is set when calling res_*init(). + +1184. [bug] libbind: call res_ndestroy() if RES_INIT is set + when res_*init() is called. + +1183. [bug] Handle ENOSR error when writing to the internal + control pipe. [RT #2395] + +1182. [bug] The server could throw an assertion failure when + constructing a negative response packet. + +1176. [doc] Document that allow-v6-synthesis is only performed + for clients that are supplied recursive service. + [RT #2260] + +1175. [bug] named-checkzone failed to call dns_result_register() + at startup which could result in runtime + exceptions when printing "out of memory" errors. + [RT #2335] + +1174. [bug] Win32: add WSAECONNRESET to the expected errors + from connect(). [RT #2308] + +1173. [bug] Potential memory leaks in isc_log_create() and + isc_log_settag(). [RT #2336] + +1172. [doc] Add CERT, GPOS, KX, NAPTR, NSAP, PX and TXT to + table of RR types in ARM. + +1170. [bug] Don't attempt to print the token when a I/O error + occurs when parsing named.conf. [RT #2275] + +1168. [bug] Empty also-notify clauses were not handled. [RT #2309] + +1167. [contrib] nslint-2.1a3 (from author). + +1166. [bug] "Not Implemented" should be reported as NOTIMP, + not NOTIMPL. [RT #2281] + +1165. [bug] We were rejecting notify-source{-v6} in zone clauses. + +1164. [bug] Empty masters clauses in slave / stub zones were not + handled gracefully. [RT #2262] + +1162. [bug] The allow-notify option was not accepted in slave + zone statements. + +1161. [bug] named-checkzone looped on unbalanced brackets. + [RT #2248] + +1160. [bug] Generating Diffie-Hellman keys longer than 1024 + bits could fail. [RT #2241] + +1156. [port] The configure test for strsep() incorrectly + succeeded on certain patched versions of + AIX 4.3.3. [RT #2190] + +1154. [bug] Don't attempt to obtain the netmask of a interface + if there is no address configured. [RT #2176] + +1152. [bug] libbind: read buffer overflows. + +1144. [bug] rndc-confgen would crash if both the -a and -t + options were specified. [RT #2159] + +1142. [bug] dnssec-signzone would fail to delete temporary files + in some failure cases. [RT #2144] + +1141. [bug] When named rejected a control message, it would + leak a file descriptor and memory. It would also + fail to respond, causing rndc to hang. + [RT #2139, #2164] + +1140. [bug] rndc-confgen did not accept IPv6 addresses as arguments + to the -s option. [RT #2138] + +1136. [bug] CNAME records synthesized from DNAMEs did not + have a TTL of zero as required by RFC2672. + [RT #2129] + +1125. [bug] rndc: -k option was missing from usage message. + [RT #2057] + +1124. [doc] dig: +[no]dnssec, +[no]besteffort and +[no]fail + are now documented. [RT #2052] + +1123. [bug] dig +[no]fail did not match description. [RT #2052] + +1109. [bug] nsupdate accepted illegal ttl values. + +1108. [bug] On Win32, rndc was hanging when named was not running + due to failure to select for exceptional conditions + in select(). [RT #1870] + +1081. [bug] Multicast queries were incorrectly identified + based on the source address, not the destination + address. + +1072. [bug] The TCP client quota could be exceeded when + recursion occurred. [RT #1937] + +1071. [bug] Sockets listening for TCP DNS connections + specified an excessive listen backlog. [RT #1937] + +1070. [bug] Copy DNSSEC OK (DO) to response as specified by + draft-ietf-dnsext-dnssec-okbit-03.txt. + +1014. [bug] Some queries would cause statistics counters to + increment more than once or not at all. [RT #1321] + +1012. [bug] The -p option to named did not behave as documented. + + 988. [bug] 'additional-from-auth no;' did not work reliably + in the case of queries answered from the cache. + [RT #1436] + + 995. [bug] dig, host, nslookup: using a raw IPv6 address as a + target address should be fatal on a IPv4 only system. --- 9.2.0 released --- @@ -264,6 +434,7 @@ --- 9.2.0rc4 released --- + 1013. [bug] It was possible to cancel a query twice when marking a server as bogus or by having a blackhole acl. [RT #1776] @@ -1,4 +1,4 @@ -Copyright (C) 1996-2001 Internet Software Consortium. +Copyright (C) 1996-2002 Internet Software Consortium. Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above @@ -13,6 +13,7 @@ FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +$Id: COPYRIGHT,v 1.6.2.2 2002/02/12 06:05:48 marka Exp $ Portions Copyright (C) 1996-2001 Nominum, Inc. diff --git a/EXCLUDED b/EXCLUDED new file mode 100644 index 00000000..f62e8f75 --- /dev/null +++ b/EXCLUDED @@ -0,0 +1,68 @@ +1007. [port] config.guess, config.sub from autoconf-2.52. + +1008. [port] libtool.m4, ltmain.sh from libtool-1.4.2. + +1009. [port] OpenUNIX 8 support. [RT #1728] + +1024. [port] Compilation failed on HP-UX 11.11 due to + incompatible use of the SIOCGLIFCONF macro + name. [RT #1831] + [needs more work] + +1073. [bug] The ADB cache cleaning should also be space driven. + [RT #1915, #1938] + [ New function dns_adb_setadbsize() ] + +1105. [port] OpenUNIX 8 enable threads by default. [RT #1970] + [Functional change] + +1110. [bug] dig should only accept valid abbreviations of +options. + [RT #2003] + [Potentially breaks scripts. Leave to 9.3.0.] + +1143. [bug] When a trusted-keys statement was present and named + was built without crypto support, it would leak memory. + [ Not applicable to 9.2 ] + +1150. [bug] named incorrectly accepted TTL values + containing plus or minus signs, such as + 1d+1h-1s. + [ Uses new function isc_parse_uint32() ] + +1151. [bug] nslookup failed to check that the arguments to + the port, timeout, and retry options were + valid integers and in range. [RT #2099] + [ Uses new function isc_parse_uint32() ] + +1159. [bug] MD and MF are not permitted to be loaded by RFC1123 + [ Could cause zones that loaded in 9.2.0 to fail + to load. Leave such breakages to 9.3.0. ] + +1187. [bug] named was incorrectly returning DNSSEC records + in negative responses when the DO bit was not set. + [ Requires API change (new arguement) to + dns_rdataset_towire(), dns_rdataset_towirepartial() + and dns_rdataset_towirepartial() ] + +1025. [bug] Don't use multicast addresses to resolve iterative + queries. [RT #101] + +1034. [bug] Ignore the RD bit on multicast queries as specified + in RFC 1123. [RT #137] + +1035. [bug] If we respond to multicast queries (which we + currently do not), respond from a unicast address + as specified in RFC 1123. [RT #137] + +1037. [bug] Negative responses whose authority section contain + SOA or NS records whose owner names are not equal + equal to or parents of the query name should be + rejected. [RT #1862] + +1079. [bug] BIND 8 compatibility: accept bare elements at top + level of sort list treating them as if they were + a single element list. [RT #1963] + +1080. [bug] BIND 8 compatibility: accept bare IP prefixes + as the second element of a two-element top level + sort list statement. [RT #1964] @@ -265,3 +265,33 @@ address 127.0.0.1 and the IPv6 loopback address ::1, and you do not have IPv6 fully operational. Change the "default-server localhost" to "default-server 127.0.0.1" to make sure rdnc does not try to contact the name server using IPv6. + + +Q: I have Freebsd 4.4 and "rndc-confgen -a" just sits there. + +A: /dev/random is not configured. Use rndcontrol(8) to tell the kernel +to use certian interupts as a source of random events. You can make this +permanent by setting rand_irqs in /etc/rc.conf. + +e.g. + /etc/rc.conf + rand_irqs="3 14 15" + + +Q: Why is named listening on UDP port other than 53? + +A: Named uses a system selected port to make queries of other nameservers. +This behaviour can be overridden by using query-source to lock down the +port and/or address. + + +Q: I get error messages like "multiple RRs of singleton type" and +"CNAME and other data" when transfering a zone. What does this mean? + +A: These indicate a malformed master zone. You can identify the +exact records involved by transfering the zone using dig then +running named-checkzone on it. + + e.g. + dig axfr example.com @master-server > tmp + named-checkzone example.com tmp @@ -44,6 +44,15 @@ BIND 9 Nominum, Inc. +BIND 9.2.1 + + BIND 9.2.1 is a maintenance release, containing fixes for + a number of bugs in 9.2.0 but no new features. + + NOTE: dig, nslookup name. now report "Not Implemented" as + NOTIMP rather than NOTIMPL. This will have impact on scripts + that are looking for NOTIMPL. + BIND 9.2.0 BIND 9.2.0 introduces a number of new features over 9.1, @@ -163,11 +172,13 @@ Building SuSE Linux 7.0 Slackware Linux 7.x, 8.0 Red Hat Linux 7.1 + Debian GNU/Linux 2.2 and 3.0 OpenBSD 2.6, 2.8, 2.9 UnixWare 7.1.1 HP-UX 10.20 BSD/OS 4.2 OpenUNIX 8 + Mac OS X 10.1 To build, just @@ -241,6 +252,9 @@ Building should also "make depend". If you're using Emacs, you might find "make tags" helpful. + If you need to re-run configure please run "make distclean" first. + This will ensure that all the option changes take. + Building with gcc is not supported, unless gcc is the vendor's usual compiler (e.g. the various BSD systems, Linux). @@ -265,6 +279,9 @@ Documentation notes in doc/misc/migration. If you are upgrading from BIND 4, read doc/misc/migration-4to9. + Frequently asked questions and their answers can be found in + FAQ. + Bug Reports and Mailing Lists @@ -275,6 +292,10 @@ Bug Reports and Mailing Lists To join the BIND 9 Users mailing list, send mail to bind9-users-request@isc.org + + archives of which can be found via + + http://www.isc.org/ml-archives/ If you're planning on making changes to the BIND 9 source code, you might want to join the BIND 9 Workers mailing list. diff --git a/bin/check/Makefile.in b/bin/check/Makefile.in index 3930193e..e1740405 100644 --- a/bin/check/Makefile.in +++ b/bin/check/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2000, 2001 Internet Software Consortium. +# Copyright (C) 2000-2002 Internet Software Consortium. # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -13,7 +13,7 @@ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.15 2001/07/27 17:45:27 gson Exp $ +# $Id: Makefile.in,v 1.15.2.3 2002/02/12 06:05:50 marka Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -62,9 +62,10 @@ named-checkzone.@O@: named-checkzone.c ${LIBTOOL} ${CC} ${ALL_CFLAGS} -DVERSION=\"${VERSION}\" \ -c ${srcdir}/named-checkzone.c -named-checkconf: named-checkconf.@O@ check-tool.@O@ ${ISCDEPLIBS} ${ISCCFGDEPLIBS} +named-checkconf: named-checkconf.@O@ check-tool.@O@ ${ISCDEPLIBS} \ + ${ISCCFGDEPLIBS} ${DNSDEPLIBS} ${LIBTOOL} ${PURIFY} ${CC} ${CFLAGS} -o $@ named-checkconf.@O@ \ - check-tool.@O@ ${ISCCFGLIBS} ${ISCLIBS} ${LIBS} + check-tool.@O@ ${ISCCFGLIBS} ${DNSLIBS} ${ISCLIBS} ${LIBS} named-checkzone: named-checkzone.@O@ check-tool.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS} ${LIBTOOL} ${PURIFY} ${CC} ${CFLAGS} -o $@ named-checkzone.@O@ \ @@ -85,4 +86,4 @@ install:: named-checkconf named-checkzone installdirs for m in ${MANPAGES}; do ${INSTALL_DATA} ${srcdir}/$$m ${DESTDIR}${mandir}/man8; done clean distclean:: - rm -f ${TARGETS} + rm -f ${TARGETS} r1.htm diff --git a/bin/check/named-checkconf.docbook b/bin/check/named-checkconf.docbook index 3f872c7a..03f4612b 100644 --- a/bin/check/named-checkconf.docbook +++ b/bin/check/named-checkconf.docbook @@ -1,6 +1,6 @@ <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> <!-- - - Copyright (C) 2001 Internet Software Consortium. + - Copyright (C) 2001, 2002 Internet Software Consortium. - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above @@ -16,7 +16,7 @@ - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: named-checkconf.docbook,v 1.3 2001/06/29 01:04:56 gson Exp $ --> +<!-- $Id: named-checkconf.docbook,v 1.3.2.1 2002/02/08 03:56:57 marka Exp $ --> <refentry> <refentryinfo> diff --git a/bin/check/named-checkzone.c b/bin/check/named-checkzone.c index 9625bbce..5aad258c 100644 --- a/bin/check/named-checkzone.c +++ b/bin/check/named-checkzone.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: named-checkzone.c,v 1.13 2001/06/29 01:04:59 gson Exp $ */ +/* $Id: named-checkzone.c,v 1.13.2.2 2002/02/08 03:56:58 marka Exp $ */ #include <config.h> @@ -157,6 +157,8 @@ main(int argc, char **argv) { dns_log_setcontext(lctx); } + dns_result_register(); + origin = argv[isc_commandline_index++]; filename = argv[isc_commandline_index++]; result = setup(origin, filename, classname); diff --git a/bin/dig/dig.1 b/bin/dig/dig.1 index 672be342..352c0e20 100644 --- a/bin/dig/dig.1 +++ b/bin/dig/dig.1 @@ -274,7 +274,7 @@ Sets the timeout for a query to An attempt to set \fIT\fR to less than 1 will result in a query timeout of 1 second being applied. .TP -\fB+tries=A\fR +\fB+tries=T\fR Sets the number of times to retry UDP queries to server to \fIT\fR instead of the default, 3. If \fIT\fR is less than or equal to zero, the number of @@ -301,6 +301,19 @@ Print records like the SOA records in a verbose multi-line format with human-readable comments. The default is to print each record on a single line, to facilitate machine parsing of the \fBdig\fR output. +.TP +\fB+[no]fail\fR +Do not try the next server if you receive a SERVFAIL. The default is +to not try the next server which is the reverse of normal stub resolver +behaviour. +.TP +\fB+[no]besteffort\fR +Attempt to display the contents of messages which are malformed. +The default is to not display malformed answers. +.TP +\fB+[no]dnssec\fR +Requests DNSSEC records be sent by setting the DNSSEC OK bit (DO) +in the the OPT record in the additional section of the query. .SH "MULTIPLE QUERIES" .PP The BIND 9 implementation of \fBdig \fR supports diff --git a/bin/dig/dig.c b/bin/dig/dig.c index 29d2c4e3..fcd2c9d0 100644 --- a/bin/dig/dig.c +++ b/bin/dig/dig.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dig.c,v 1.157.2.3 2001/11/15 01:24:10 marka Exp $ */ +/* $Id: dig.c,v 1.157.2.6 2002/02/08 03:57:00 marka Exp $ */ #include <config.h> #include <stdlib.h> @@ -111,7 +111,7 @@ static const char *rcodetext[] = { "FORMERR", "SERVFAIL", "NXDOMAIN", - "NOTIMPL", + "NOTIMP", "REFUSED", "YXDOMAIN", "YXRRSET", @@ -156,9 +156,11 @@ help(void) { " -x dot-notation (shortcut for in-addr lookups)\n" " -n (nibble form for reverse IPv6 lookups)\n" " -f filename (batch mode)\n" +" -b address (bind to source address)\n" " -p port (specify port number)\n" " -t type (specify query type)\n" " -c class (specify query class)\n" +" -k keyfile (specify tsig key file)\n" " -y name:key (specify named base64 tsig key)\n" " d-opt is of the form +keyword[=value], where keyword is:\n" " +[no]vc (TCP mode)\n" @@ -167,6 +169,7 @@ help(void) { " +tries=### (Set number of UDP attempts) [3]\n" " +domain=### (Set default domainname)\n" " +bufsize=### (Set EDNS0 Max UDP packet size)\n" +" +ndots=### (Set NDOTS value)\n" " +[no]search (Set whether to use searchlist)\n" " +[no]defname (Ditto)\n" " +[no]recursive (Recursive mode)\n" @@ -177,7 +180,6 @@ help(void) { " +[no]aaonly (Set AA flag in query)\n" " +[no]adflag (Set AD flag in query)\n" " +[no]cdflag (Set CD flag in query)\n" -" +ndots=### (Set NDOTS value)\n" " +[no]cmd (Control display of command line)\n" " +[no]comments (Control display of comment lines)\n" " +[no]question (Control display of question)\n" @@ -188,7 +190,7 @@ help(void) { " +[no]short (Disable everything except short\n" " form of answer)\n" " +[no]all (Set or clear all display flags)\n" -" +qr (Print question before sending)\n" +" +[no]qr (Print question before sending)\n" " +[no]nssearch (Search all authoritative nameservers)\n" " +[no]identify (ID responders in short answers)\n" " +[no]trace (Trace delegation down from root)\n" diff --git a/bin/dig/dig.docbook b/bin/dig/dig.docbook index 74d946c1..7b816d01 100644 --- a/bin/dig/dig.docbook +++ b/bin/dig/dig.docbook @@ -16,7 +16,7 @@ - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: dig.docbook,v 1.4.2.1 2001/11/08 00:15:23 gson Exp $ --> +<!-- $Id: dig.docbook,v 1.4.2.2 2001/11/28 23:35:02 gson Exp $ --> <refentry> @@ -414,7 +414,7 @@ An attempt to set <parameter>T</parameter> to less than 1 will result in a query timeout of 1 second being applied. </para></listitem></varlistentry> -<varlistentry><term><option>+tries=A</option></term> +<varlistentry><term><option>+tries=T</option></term> <listitem><para> Sets the number of times to retry UDP queries to server to <parameter>T</parameter> instead of the default, 3. If @@ -452,6 +452,27 @@ of the <command>dig</command> output. </para> </listitem></varlistentry> +<varlistentry><term><option>+[no]fail</option></term> +<listitem><para> +Do not try the next server if you receive a SERVFAIL. The default is +to not try the next server which is the reverse of normal stub resolver +behaviour. +</para> + +</listitem></varlistentry> +<varlistentry><term><option>+[no]besteffort</option></term> +<listitem><para> +Attempt to display the contents of messages which are malformed. +The default is to not display malformed answers. +</para> + +</listitem></varlistentry> +<varlistentry><term><option>+[no]dnssec</option></term> +<listitem><para> +Requests DNSSEC records be sent by setting the DNSSEC OK bit (DO) +in the the OPT record in the additional section of the query. +</para> + </variablelist> </para> diff --git a/bin/dig/dig.html b/bin/dig/dig.html index 27a30f97..c635b6e6 100644 --- a/bin/dig/dig.html +++ b/bin/dig/dig.html @@ -870,7 +870,7 @@ in a query timeout of 1 second being applied.</P ><DT ><TT CLASS="OPTION" ->+tries=A</TT +>+tries=T</TT ></DT ><DD ><P @@ -959,6 +959,37 @@ CLASS="COMMAND" >dig</B > output.</P ></DD +><DT +><TT +CLASS="OPTION" +>+[no]fail</TT +></DT +><DD +><P +>Do not try the next server if you receive a SERVFAIL. The default is +to not try the next server which is the reverse of normal stub resolver +behaviour.</P +></DD +><DT +><TT +CLASS="OPTION" +>+[no]besteffort</TT +></DT +><DD +><P +>Attempt to display the contents of messages which are malformed. +The default is to not display malformed answers.</P +></DD +><DT +><TT +CLASS="OPTION" +>+[no]dnssec</TT +></DT +><DD +><P +>Requests DNSSEC records be sent by setting the DNSSEC OK bit (DO) +in the the OPT record in the additional section of the query.</P +></DD ></DL ></DIV > </P @@ -966,7 +997,7 @@ CLASS="COMMAND" ><DIV CLASS="REFSECT1" ><A -NAME="AEN320" +NAME="AEN335" ></A ><H2 >MULTIPLE QUERIES</H2 @@ -1050,7 +1081,7 @@ CLASS="LITERAL" ><DIV CLASS="REFSECT1" ><A -NAME="AEN338" +NAME="AEN353" ></A ><H2 >FILES</H2 @@ -1063,7 +1094,7 @@ CLASS="FILENAME" ><DIV CLASS="REFSECT1" ><A -NAME="AEN342" +NAME="AEN357" ></A ><H2 >SEE ALSO</H2 @@ -1097,7 +1128,7 @@ CLASS="CITETITLE" ><DIV CLASS="REFSECT1" ><A -NAME="AEN355" +NAME="AEN370" ></A ><H2 >BUGS </H2 diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index 5bd70379..adc6acbc 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dighost.c,v 1.221.2.7 2001/11/15 01:24:12 marka Exp $ */ +/* $Id: dighost.c,v 1.221.2.11 2002/02/19 22:12:57 gson Exp $ */ /* * Notice to programmers: Do not use this code as an example of how to @@ -363,7 +363,7 @@ make_empty_lookup(void) { looknew->identify = ISC_FALSE; looknew->identify_previous_line = ISC_FALSE; looknew->ignore = ISC_FALSE; - looknew->servfail_stops = ISC_FALSE; + looknew->servfail_stops = ISC_TRUE; looknew->besteffort = ISC_TRUE; looknew->dnssec = ISC_FALSE; looknew->udpsize = 0; @@ -2174,8 +2174,10 @@ recv_done(isc_task_t *task, isc_event_t *event) { debug("before parse starts"); parseflags = DNS_MESSAGEPARSE_PRESERVEORDER; - if (l->besteffort) + if (l->besteffort) { parseflags |= DNS_MESSAGEPARSE_BESTEFFORT; + parseflags |= DNS_MESSAGEPARSE_IGNORETRUNCATION; + } result = dns_message_parse(msg, b, parseflags); if (result == DNS_R_RECOVERABLE) { printf(";; Warning: Message parser reports malformed " @@ -2208,7 +2210,7 @@ recv_done(isc_task_t *task, isc_event_t *event) { UNLOCK_LOOKUP; return; } - if (msg->rcode == dns_rcode_servfail && l->servfail_stops) { + if (msg->rcode == dns_rcode_servfail && !l->servfail_stops) { dig_query_t *next = ISC_LIST_NEXT(query, link); if (l->current_query == query) l->current_query = NULL; @@ -2393,15 +2395,16 @@ get_address(char *host, in_port_t port, isc_sockaddr_t *sockaddr) { debug("get_address()"); - /* - * Assume we have v4 if we don't have v6, since setup_libs - * fatal()'s out if we don't have either. - */ - if (have_ipv6 && inet_pton(AF_INET6, host, &in6) == 1) + if (inet_pton(AF_INET6, host, &in6) == 1) { + if (!have_ipv6) + fatal("Protocol family INET6 not supported '%s'", host); isc_sockaddr_fromin6(sockaddr, &in6, port); - else if (inet_pton(AF_INET, host, &in4) == 1) - isc_sockaddr_fromin(sockaddr, &in4, port); - else { + } else if (inet_pton(AF_INET, host, &in4) == 1) { + if (have_ipv4) + isc_sockaddr_fromin(sockaddr, &in4, port); + else + isc_sockaddr_v6fromin(sockaddr, &in4, port); + } else { #ifdef USE_GETADDRINFO memset(&hints, 0, sizeof(hints)); if (!have_ipv6) diff --git a/bin/dig/host.c b/bin/dig/host.c index a2a1a330..5218ff7f 100644 --- a/bin/dig/host.c +++ b/bin/dig/host.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: host.c,v 1.76 2001/08/27 21:31:29 gson Exp $ */ +/* $Id: host.c,v 1.76.2.2 2002/02/08 03:57:04 marka Exp $ */ #include <config.h> #include <stdlib.h> @@ -78,7 +78,7 @@ static const char *rcodetext[] = { "FORMERR", "SERVFAIL", "NXDOMAIN", - "NOTIMPL", + "NOTIMP", "REFUSED", "YXDOMAIN", "YXRRSET", diff --git a/bin/dig/nslookup.c b/bin/dig/nslookup.c index 627d2b00..1b5810b0 100644 --- a/bin/dig/nslookup.c +++ b/bin/dig/nslookup.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: nslookup.c,v 1.90 2001/07/30 01:09:14 marka Exp $ */ +/* $Id: nslookup.c,v 1.90.2.2 2002/02/08 03:57:05 marka Exp $ */ #include <config.h> @@ -80,7 +80,7 @@ static const char *rcodetext[] = { "FORMERR", "SERVFAIL", "NXDOMAIN", - "NOTIMPL", + "NOTIMP", "REFUSED", "YXDOMAIN", "YXRRSET", diff --git a/bin/dnssec/dnssectool.c b/bin/dnssec/dnssectool.c index acc60312..688890f1 100644 --- a/bin/dnssec/dnssectool.c +++ b/bin/dnssec/dnssectool.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssectool.c,v 1.31.2.1 2001/09/06 00:14:15 gson Exp $ */ +/* $Id: dnssectool.c,v 1.31.2.2 2001/11/27 22:41:49 gson Exp $ */ #include <config.h> @@ -65,11 +65,8 @@ setfatalcallback(fatalcallback_t *callback) { void check_result(isc_result_t result, const char *message) { - if (result != ISC_R_SUCCESS) { - fprintf(stderr, "%s: %s: %s\n", program, message, - isc_result_totext(result)); - exit(1); - } + if (result != ISC_R_SUCCESS) + fatal("%s: %s", message, isc_result_totext(result)); } void diff --git a/bin/named/client.c b/bin/named/client.c index ef9fc19a..89d3b39b 100644 --- a/bin/named/client.c +++ b/bin/named/client.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: client.c,v 1.176.2.8 2001/11/16 21:21:42 bwelling Exp $ */ +/* $Id: client.c,v 1.176.2.10 2002/02/08 03:57:07 marka Exp $ */ #include <config.h> @@ -1014,7 +1014,7 @@ client_addopt(ns_client_t *client) { /* * Set EXTENDED-RCODE, VERSION, and Z to 0. */ - rdatalist->ttl = 0; + rdatalist->ttl = (client->extflags & DNS_MESSAGEEXTFLAG_REPLYPRESERVE); /* * No ENDS options in the default case. diff --git a/bin/named/config.c b/bin/named/config.c index cbe2a58e..b10ba494 100644 --- a/bin/named/config.c +++ b/bin/named/config.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001 Internet Software Consortium. + * Copyright (C) 2001, 2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: config.c,v 1.11.2.1 2001/09/21 20:30:32 gson Exp $ */ +/* $Id: config.c,v 1.11.2.3 2002/02/08 03:57:09 marka Exp $ */ #include <config.h> @@ -419,11 +419,6 @@ ns_config_getport(cfg_obj_t *config, in_port_t *portp) { isc_result_t result; int i; - if (ns_g_port != 0) { - *portp = ns_g_port; - return (ISC_R_SUCCESS); - } - cfg_map_get(config, "options", &options); i = 0; if (options != NULL) diff --git a/bin/named/controlconf.c b/bin/named/controlconf.c index 2190227c..aa90f26a 100644 --- a/bin/named/controlconf.c +++ b/bin/named/controlconf.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: controlconf.c,v 1.28.2.6 2001/10/31 23:00:44 marka Exp $ */ +/* $Id: controlconf.c,v 1.28.2.7 2001/11/27 22:38:14 gson Exp $ */ #include <config.h> @@ -539,6 +539,7 @@ control_newconn(isc_task_t *task, isc_event_t *event) { NS_LOGMODULE_CONTROL, ISC_LOG_WARNING, "rejected command channel message from %s", socktext); + isc_socket_detach(&sock); goto restart; } @@ -550,6 +551,7 @@ control_newconn(isc_task_t *task, isc_event_t *event) { NS_LOGMODULE_CONTROL, ISC_LOG_WARNING, "dropped command channel from %s: %s", socktext, isc_result_totext(result)); + isc_socket_detach(&sock); goto restart; } diff --git a/bin/named/include/named/query.h b/bin/named/include/named/query.h index ada1fbd7..20d575f1 100644 --- a/bin/named/include/named/query.h +++ b/bin/named/include/named/query.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: query.h,v 1.28 2001/03/14 19:33:00 halley Exp $ */ +/* $Id: query.h,v 1.28.2.3 2002/02/08 03:57:17 marka Exp $ */ #ifndef NAMED_QUERY_H #define NAMED_QUERY_H 1 @@ -46,6 +46,9 @@ struct ns_query { unsigned int fetchoptions; dns_db_t * gluedb; dns_db_t * authdb; + dns_zone_t * authzone; + isc_boolean_t authdbset; + isc_boolean_t isreferral; dns_fetch_t * fetch; dns_a6context_t a6ctx; isc_bufferlist_t namebufs; diff --git a/bin/named/interfacemgr.c b/bin/named/interfacemgr.c index 385bc075..cf687da4 100644 --- a/bin/named/interfacemgr.c +++ b/bin/named/interfacemgr.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: interfacemgr.c,v 1.59.2.3 2001/10/22 17:42:05 gson Exp $ */ +/* $Id: interfacemgr.c,v 1.59.2.5 2002/02/08 03:57:10 marka Exp $ */ #include <config.h> @@ -301,7 +301,7 @@ ns_interface_accepttcp(ns_interface_t *ifp) { isc_result_totext(result)); goto tcp_bind_failure; } - result = isc_socket_listen(ifp->tcpsocket, 0); + result = isc_socket_listen(ifp->tcpsocket, 3); if (result != ISC_R_SUCCESS) { isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_ERROR, "listening on TCP socket: %s", diff --git a/bin/named/query.c b/bin/named/query.c index 3a89b119..3408f34e 100644 --- a/bin/named/query.c +++ b/bin/named/query.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: query.c,v 1.198.2.1 2001/11/15 01:24:17 marka Exp $ */ +/* $Id: query.c,v 1.198.2.6 2002/02/08 03:57:12 marka Exp $ */ #include <config.h> @@ -143,20 +143,55 @@ synth_rev_respond(ns_client_t *client, dns_byaddrevent_t *bevent); * Increment query statistics counters. */ static inline void -count_query(dns_zone_t *zone, isc_boolean_t is_zone, - dns_statscounter_t counter) -{ +inc_stats(ns_client_t *client, dns_statscounter_t counter) { + dns_zone_t *zone = client->query.authzone; + REQUIRE(counter < DNS_STATS_NCOUNTERS); ns_g_server->querystats[counter]++; - if (is_zone && zone != NULL) { + if (zone != NULL) { isc_uint64_t *zonestats = dns_zone_getstatscounters(zone); if (zonestats != NULL) zonestats[counter]++; } } +static void +query_send(ns_client_t *client) { + dns_statscounter_t counter; + if (client->message->rcode == dns_rcode_noerror) { + if (ISC_LIST_EMPTY(client->message->sections[DNS_SECTION_ANSWER])) { + if (client->query.isreferral) { + counter = dns_statscounter_referral; + } else { + counter = dns_statscounter_nxrrset; + } + } else { + counter = dns_statscounter_success; + } + } else if (client->message->rcode == dns_rcode_nxdomain) { + counter = dns_statscounter_nxdomain; + } else { + /* We end up here in case of YXDOMAIN, and maybe others */ + counter = dns_statscounter_failure; + } + inc_stats(client, counter); + ns_client_send(client); +} + +static void +query_error(ns_client_t *client, isc_result_t result) { + inc_stats(client, dns_statscounter_failure); + ns_client_error(client, result); +} + +static void +query_next(ns_client_t *client, isc_result_t result) { + inc_stats(client, dns_statscounter_failure); + ns_client_next(client, result); +} + static inline void query_maybeputqname(ns_client_t *client) { if (client->query.restarts > 0) { @@ -205,6 +240,8 @@ query_reset(ns_client_t *client, isc_boolean_t everything) { if (client->query.authdb != NULL) dns_db_detach(&client->query.authdb); + if (client->query.authzone != NULL) + dns_zone_detach(&client->query.authzone); /* * Clean up free versions. @@ -246,11 +283,12 @@ query_reset(ns_client_t *client, isc_boolean_t everything) { client->query.dboptions = 0; client->query.fetchoptions = 0; client->query.gluedb = NULL; - client->query.authdb = NULL; + client->query.authdbset = ISC_FALSE; + client->query.isreferral = ISC_FALSE; } static void -query_next(ns_client_t *client) { +query_next_callback(ns_client_t *client) { query_reset(client, ISC_FALSE); } @@ -473,6 +511,9 @@ ns_query_init(ns_client_t *client) { client->query.qname = NULL; client->query.fetch = NULL; client->query.authdb = NULL; + client->query.authzone = NULL; + client->query.authdbset = ISC_FALSE; + client->query.isreferral = ISC_FALSE; query_reset(client, ISC_FALSE); result = query_newdbversion(client, 3); if (result != ISC_R_SUCCESS) @@ -550,25 +591,15 @@ query_getzonedb(ns_client_t *client, dns_name_t *name, unsigned int options, goto fail; /* - * If this is the first time we are called (that is, looking up - * the actual name in the query section) remember this database. - * - * If authdb is non-NULL, we have been here before, and the - * found database is always returned. - * * This limits our searching to the zone where the first name - * (the query target) is found. This prevents following CNAMES - * or DNAMES into other zones and prevents returning additional - * data from other zones. + * (the query target) was looked for. This prevents following + * CNAMES or DNAMES into other zones and prevents returning + * additional data from other zones. */ - if (!client->view->additionalfromauth) { - if (client->query.authdb != NULL) { - if (db != client->query.authdb) - goto refuse; - } else { - dns_db_attach(db, &client->query.authdb); - } - } + if (!client->view->additionalfromauth && + client->query.authdbset && + db != client->query.authdb) + goto refuse; /* * If the zone has an ACL, we'll check it, otherwise @@ -847,7 +878,6 @@ query_simplefind(void *arg, dns_name_t *name, dns_rdatatype_t type, dns_rdataset_isassociated(sigrdataset)) dns_rdataset_disassociate(sigrdataset); if (is_zone) { - count_query(zone, is_zone, dns_statscounter_referral); if (USECACHE(client)) { /* * Either the answer is in the cache, or we @@ -912,11 +942,8 @@ query_simplefind(void *arg, dns_name_t *name, dns_rdatatype_t type, } /* * If we get here, the result is ISC_R_SUCCESS, and we found the - * answer we were looking for in the zone. Update the zone's - * query counter. + * answer we were looking for in the zone. */ - if (result == ISC_R_SUCCESS) - count_query(zone, is_zone, dns_statscounter_success); cleanup: if (dns_rdataset_isassociated(&zrdataset)) { @@ -2041,7 +2068,7 @@ query_resume(isc_task_t *task, isc_event_t *event) { if (devent->sigrdataset != NULL) query_putrdataset(client, &devent->sigrdataset); isc_event_free(&event); - ns_client_next(client, ISC_R_CANCELED); + query_next(client, ISC_R_CANCELED); /* * This may destroy the client. */ @@ -2058,18 +2085,23 @@ query_recurse(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qdomain, isc_result_t result; dns_rdataset_t *rdataset, *sigrdataset; + inc_stats(client, dns_statscounter_recursion); + /* * We are about to recurse, which means that this client will * be unavailable for serving new requests for an indeterminate * amount of time. If this client is currently responsible * for handling incoming queries, set up a new client * object to handle them while we are waiting for a - * response. + * response. There is no need to replace TCP clients + * because those have already been replaced when the + * connection was accepted (if allowed by the TCP quota). */ if (! client->mortal) { result = isc_quota_attach(&ns_g_server->recursionquota, &client->recursionquota); - if (result == ISC_R_SUCCESS) + if (result == ISC_R_SUCCESS && + (client->attributes & NS_CLIENTATTR_TCP) == 0) result = ns_client_replace(client); if (result != ISC_R_SUCCESS) { ns_client_log(client, NS_LOGCATEGORY_CLIENT, @@ -2385,20 +2417,17 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) */ dbuf = query_getnamebuf(client); if (dbuf == NULL) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } fname = query_newname(client, dbuf, &b); if (fname == NULL) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } tname = dns_fixedname_name(&event->foundname); result = dns_name_copy(tname, fname, NULL); if (result != ISC_R_SUCCESS) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } @@ -2432,7 +2461,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) result = query_getdb(client, client->query.qname, 0, &zone, &db, &version, &is_zone); if (result != ISC_R_SUCCESS) { - count_query(NULL, ISC_FALSE, dns_statscounter_failure); if (result == DNS_R_REFUSED) QUERY_ERROR(DNS_R_REFUSED); else @@ -2442,6 +2470,14 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) if (is_zone) authoritative = ISC_TRUE; + + if (event == NULL && client->query.restarts == 0) { + if (is_zone) { + dns_zone_attach(zone, &client->query.authzone); + dns_db_attach(db, &client->query.authdb); + } + client->query.authdbset = ISC_TRUE; + } db_find: CTRACE("query_find: db_find"); @@ -2450,21 +2486,18 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) */ dbuf = query_getnamebuf(client); if (dbuf == NULL) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } fname = query_newname(client, dbuf, &b); rdataset = query_newrdataset(client); if (fname == NULL || rdataset == NULL) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } if (WANTDNSSEC(client)) { sigrdataset = query_newrdataset(client); if (sigrdataset == NULL) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } @@ -2521,8 +2554,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) result = dns_name_copy(client->query.qname, fname, NULL); if (result != ISC_R_SUCCESS) { - count_query(zone, is_zone, - dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } @@ -2540,7 +2571,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) CTRACE("query_find: resume"); switch (result) { case ISC_R_SUCCESS: - count_query(zone, is_zone, dns_statscounter_success); /* * This case is handled in the main line below. */ @@ -2590,8 +2620,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) * recurse anyway. */ if (RECURSIONOK(client)) { - count_query(zone, is_zone, - dns_statscounter_recursion); result = query_recurse(client, qtype, NULL, NULL); if (result == ISC_R_SUCCESS) @@ -2599,15 +2627,11 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) NS_QUERYATTR_RECURSING; else { /* Unable to recurse. */ - count_query(zone, is_zone, - dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); } goto cleanup; } else { /* Unable to give root server referral. */ - count_query(zone, is_zone, - dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } @@ -2639,6 +2663,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) * database by setting client->query.gluedb. */ client->query.gluedb = db; + client->query.isreferral = ISC_TRUE; /* * We must ensure NOADDITIONAL is off, * because the generation of @@ -2651,9 +2676,9 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) sigrdatasetp = &sigrdataset; else sigrdatasetp = NULL; - query_addrrset(client, &fname, &rdataset, - sigrdatasetp, dbuf, - DNS_SECTION_AUTHORITY); + query_addrrset(client, &fname, + &rdataset, sigrdatasetp, + dbuf, DNS_SECTION_AUTHORITY); client->query.gluedb = NULL; } else { /* @@ -2714,8 +2739,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) /* * Recurse! */ - count_query(zone, is_zone, - dns_statscounter_recursion); if (type == dns_rdatatype_key) result = query_recurse(client, qtype, NULL, NULL); @@ -2725,20 +2748,16 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) if (result == ISC_R_SUCCESS) client->query.attributes |= NS_QUERYATTR_RECURSING; - else { - count_query(zone, is_zone, - dns_statscounter_failure); + else QUERY_ERROR(DNS_R_SERVFAIL); - } } else { /* * This is the best answer. */ - count_query(zone, is_zone, - dns_statscounter_referral); - client->query.gluedb = zdb; client->query.attributes |= NS_QUERYATTR_CACHEGLUEOK; + client->query.gluedb = zdb; + client->query.isreferral = ISC_TRUE; /* * We must ensure NOADDITIONAL is off, * because the generation of @@ -2762,7 +2781,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) goto cleanup; case DNS_R_NXRRSET: INSIST(is_zone); - count_query(zone, is_zone, dns_statscounter_nxrrset); if (dns_rdataset_isassociated(rdataset)) { /* * If we've got a NXT record, we need to save the @@ -2783,7 +2801,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) */ result = query_addsoa(client, db, ISC_FALSE); if (result != ISC_R_SUCCESS) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(result); goto cleanup; } @@ -2799,7 +2816,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) goto cleanup; case DNS_R_NXDOMAIN: INSIST(is_zone); - count_query(zone, is_zone, dns_statscounter_nxdomain); if (dns_rdataset_isassociated(rdataset)) { /* * If we've got a NXT record, we need to save the @@ -2826,7 +2842,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) else result = query_addsoa(client, db, ISC_FALSE); if (result != ISC_R_SUCCESS) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(result); goto cleanup; } @@ -2845,13 +2860,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) client->message->rcode = dns_rcode_nxdomain; goto cleanup; case DNS_R_NCACHENXDOMAIN: - INSIST(!is_zone); - count_query(NULL, is_zone, dns_statscounter_nxdomain); - goto ncachenxrrset; case DNS_R_NCACHENXRRSET: INSIST(!is_zone); - count_query(NULL, is_zone, dns_statscounter_nxrrset); - ncachenxrrset: authoritative = ISC_FALSE; /* * Set message rcode, if required. @@ -3024,8 +3034,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) */ dns_name_init(tname, NULL); query_addcnamelike(client, client->query.qname, fname, - trdataset->ttl, &tname, - dns_rdatatype_cname); + 0, &tname, dns_rdatatype_cname); if (tname != NULL) dns_message_puttempname(client->message, &tname); /* @@ -3040,7 +3049,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) /* * Something has gone wrong. */ - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } @@ -3054,7 +3062,6 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) rdsiter = NULL; result = dns_db_allrdatasets(db, node, version, 0, &rdsiter); if (result != ISC_R_SUCCESS) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } @@ -3130,14 +3137,11 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) /* * Something went wrong. */ - count_query(zone, is_zone, - dns_statscounter_failure); result = DNS_R_SERVFAIL; } } dns_rdatasetiter_destroy(&rdsiter); if (result != ISC_R_NOMORE) { - count_query(zone, is_zone, dns_statscounter_failure); QUERY_ERROR(DNS_R_SERVFAIL); goto cleanup; } @@ -3233,7 +3237,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) * or if the client requested recursion and thus wanted * the complete answer, send an error response. */ - ns_client_error(client, eresult); + query_error(client, eresult); ns_client_detach(&client); } else if (!RECURSING(client)) { /* @@ -3248,7 +3252,7 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype) client->view->auth_nxdomain == ISC_TRUE) client->message->flags |= DNS_MESSAGEFLAG_AA; - ns_client_send(client); + query_send(client); ns_client_detach(&client); } CTRACE("query_find: done"); @@ -3288,7 +3292,7 @@ ns_query_start(ns_client_t *client) { /* * Ensure that appropriate cleanups occur. */ - client->next = query_next; + client->next = query_next_callback; if ((message->flags & DNS_MESSAGEFLAG_RD) != 0) client->query.attributes |= NS_QUERYATTR_WANTRECURSION; @@ -3325,7 +3329,7 @@ ns_query_start(ns_client_t *client) { */ result = dns_message_firstname(message, DNS_SECTION_QUESTION); if (result != ISC_R_SUCCESS) { - ns_client_error(client, result); + query_error(client, result); return; } dns_message_currentname(message, DNS_SECTION_QUESTION, @@ -3338,9 +3342,9 @@ ns_query_start(ns_client_t *client) { * There's more than one QNAME in the question * section. */ - ns_client_error(client, DNS_R_FORMERR); + query_error(client, DNS_R_FORMERR); } else - ns_client_error(client, result); + query_error(client, result); return; } @@ -3351,7 +3355,7 @@ ns_query_start(ns_client_t *client) { * Check for multiple question queries, since edns1 is dead. */ if (message->counts[DNS_SECTION_QUESTION] > 1) { - ns_client_error(client, DNS_R_FORMERR); + query_error(client, DNS_R_FORMERR); return; } @@ -3371,19 +3375,19 @@ ns_query_start(ns_client_t *client) { return; case dns_rdatatype_maila: case dns_rdatatype_mailb: - ns_client_error(client, DNS_R_NOTIMP); + query_error(client, DNS_R_NOTIMP); return; case dns_rdatatype_tkey: result = dns_tkey_processquery(client->message, ns_g_server->tkeyctx, client->view->dynamickeys); if (result == ISC_R_SUCCESS) - ns_client_send(client); + query_send(client); else - ns_client_error(client, result); + query_error(client, result); return; default: /* TSIG, etc. */ - ns_client_error(client, DNS_R_FORMERR); + query_error(client, DNS_R_FORMERR); return; } } @@ -3405,7 +3409,7 @@ ns_query_start(ns_client_t *client) { */ result = dns_message_reply(message, ISC_TRUE); if (result != ISC_R_SUCCESS) { - ns_client_next(client, result); + query_next(client, result); return; } @@ -3674,9 +3678,9 @@ synth_fwd_respond(ns_client_t *client, dns_adbfind_t *find) { static void synth_finish(ns_client_t *client, isc_result_t result) { if (result == ISC_R_SUCCESS) - ns_client_send(client); + query_send(client); else - ns_client_error(client, result); + query_error(client, result); ns_client_detach(&client); } diff --git a/bin/named/server.c b/bin/named/server.c index 24978b80..38612a42 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: server.c,v 1.339.2.1 2001/09/28 05:35:47 marka Exp $ */ +/* $Id: server.c,v 1.339.2.4 2002/02/08 03:57:13 marka Exp $ */ #include <config.h> @@ -1088,7 +1088,10 @@ configure_forward(cfg_obj_t *config, dns_view_t *view, dns_name_t *origin, /* * Determine which port to send forwarded requests to. */ - CHECKM(ns_config_getport(config, &port), "port"); + if (ns_g_lwresdonly && ns_g_port != 0) + port = ns_g_port; + else + CHECKM(ns_config_getport(config, &port), "port"); if (forwarders != NULL) { portobj = cfg_tuple_get(forwarders, "port"); @@ -1727,7 +1730,10 @@ load_configuration(const char *filename, ns_server_t *server, /* * Determine which port to use for listening for incoming connections. */ - CHECKM(ns_config_getport(config, &listen_port), "port"); + if (ns_g_port != 0) + listen_port = ns_g_port; + else + CHECKM(ns_config_getport(config, &listen_port), "port"); /* * Configure the interface manager according to the "listen-on" @@ -2671,9 +2677,13 @@ ns_listenelt_fromconfig(cfg_obj_t *listener, cfg_obj_t *config, portobj = cfg_tuple_get(listener, "port"); if (!cfg_obj_isuint32(portobj)) { - result = ns_config_getport(config, &port); - if (result != ISC_R_SUCCESS) - return (result); + if (ns_g_port != 0) { + port = ns_g_port; + } else { + result = ns_config_getport(config, &port); + if (result != ISC_R_SUCCESS) + return (result); + } } else { if (cfg_obj_asuint32(portobj) >= ISC_UINT16_MAX) { cfg_obj_log(portobj, ns_g_lctx, ISC_LOG_ERROR, @@ -2851,7 +2861,7 @@ ns_server_flushcache(ns_server_t *server, char *args) { isc_result_t ns_server_status(ns_server_t *server, isc_buffer_t *text) { int zonecount, xferrunning, xferdeferred, soaqueries; - int n; + unsigned int n; zonecount = dns_zonemgr_getcount(server->zonemgr, DNS_ZONESTATE_ANY); xferrunning = dns_zonemgr_getcount(server->zonemgr, @@ -2871,7 +2881,7 @@ ns_server_status(ns_server_t *server, isc_buffer_t *text) { "server is up and running", zonecount, ns_g_debuglevel, xferrunning, xferdeferred, soaqueries, server->log_queries ? "ON" : "OFF"); - if (n < 0) + if (n >= isc_buffer_availablelength(text)) return (ISC_R_NOSPACE); isc_buffer_add(text, n); return (ISC_R_SUCCESS); diff --git a/bin/named/update.c b/bin/named/update.c index 111623e9..48fdac4a 100644 --- a/bin/named/update.c +++ b/bin/named/update.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: update.c,v 1.88 2001/05/31 10:37:58 tale Exp $ */ +/* $Id: update.c,v 1.88.2.3 2002/02/08 03:57:15 marka Exp $ */ #include <config.h> @@ -153,6 +153,10 @@ static void forward_done(isc_task_t *task, isc_event_t *event); static void update_log(ns_client_t *client, dns_zone_t *zone, + int level, const char *fmt, ...) ISC_FORMAT_PRINTF(4, 5); + +static void +update_log(ns_client_t *client, dns_zone_t *zone, int level, const char *fmt, ...) { va_list ap; @@ -1413,6 +1417,7 @@ next_active(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *oldname, /* * Add a NXT record for "name", recording the change in "diff". + * The existing NXT is removed. */ static isc_result_t add_nxt(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_diff_t *diff) @@ -1428,7 +1433,6 @@ add_nxt(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_diff_t *diff) dns_fixedname_init(&fixedname); target = dns_fixedname_name(&fixedname); - /* * Find the successor name, aka NXT target. */ @@ -1443,7 +1447,12 @@ add_nxt(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name, dns_diff_t *diff) dns_db_detachnode(db, &node); /* - * Create a diff tuple, update the database, and record the change. + * Delete the old NXT and record the change. + */ + CHECK(delete_if(true_p, db, ver, name, dns_rdatatype_nxt, 0, + NULL, diff)); + /* + * Add the new NXT and record the change. */ CHECK(dns_difftuple_create(diff->mctx, DNS_DIFFOP_ADD, name, 3600, /* XXXRTH */ @@ -1794,9 +1803,6 @@ update_signatures(isc_mem_t *mctx, dns_db_t *db, dns_dbversion_t *oldver, * there is other data, and if there is other data, * there are other SIGs. */ - CHECK(delete_if(true_p, db, newver, &t->name, - dns_rdatatype_nxt, 0, - NULL, &nxt_diff)); CHECK(add_nxt(db, newver, &t->name, &nxt_diff)); } } @@ -2407,7 +2413,6 @@ update_action(isc_task_t *task, isc_event_t *event) { } if (dns_db_issecure(db)) { - result = update_signatures(mctx, db, oldver, ver, &diff, dns_zone_getsigvalidityinterval(zone)); if (result != ISC_R_SUCCESS) { diff --git a/bin/nsupdate/nsupdate.8 b/bin/nsupdate/nsupdate.8 index d3e9b8bb..9d469db2 100644 --- a/bin/nsupdate/nsupdate.8 +++ b/bin/nsupdate/nsupdate.8 @@ -296,7 +296,7 @@ The newly-added record has a 1 day TTL (86400 seconds) .nf # nsupdate > prereq nxdomain nickname.example.com -> update add nickname.example.com CNAME somehost.example.com +> update add nickname.example.com 86400 CNAME somehost.example.com > .sp .fi diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index fefbf141..b1da4d26 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: nsupdate.c,v 1.103.2.6 2001/11/06 21:50:35 bwelling Exp $ */ +/* $Id: nsupdate.c,v 1.103.2.9 2002/02/08 03:57:18 marka Exp $ */ #include <config.h> @@ -1101,7 +1101,7 @@ static isc_uint16_t update_addordelete(char *cmdline, isc_boolean_t isdelete) { isc_result_t result; dns_name_t *name = NULL; - long ttl; + unsigned long ttl; char *word; dns_rdataclass_t rdataclass; dns_rdatatype_t rdatatype; @@ -1147,29 +1147,20 @@ update_addordelete(char *cmdline, isc_boolean_t isdelete) { goto doneparsing; } } - errno = 0; - ttl = strtol(word, &endp, 0); - if (*endp != '\0') { + ttl = strtoul(word, &endp, 10); + if (!isdigit((unsigned char)*word) || *endp != '\0') { if (isdelete) { ttl = 0; goto parseclass; } else { - fprintf(stderr, "ttl '%s' is not numeric\n", word); + fprintf(stderr, "ttl '%s' is not legal\n", word); goto failure; } } if (isdelete) ttl = 0; - else if (ttl < 0 || ttl > TTL_MAX || - (ttl == LONG_MAX && errno == ERANGE)) - { - /* - * The errno test is needed to catch when strtol() - * overflows on a platform where sizeof(int) == - * sizeof(long), because ttl will be set to LONG_MAX, - * which will be equal to TTL_MAX. - */ + else if (ttl > TTL_MAX) { fprintf(stderr, "ttl '%s' is out of range (0 to %d)\n", word, TTL_MAX); goto failure; diff --git a/bin/nsupdate/nsupdate.docbook b/bin/nsupdate/nsupdate.docbook index 178b8269..8950b854 100644 --- a/bin/nsupdate/nsupdate.docbook +++ b/bin/nsupdate/nsupdate.docbook @@ -16,7 +16,7 @@ - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --> -<!-- $Id: nsupdate.docbook,v 1.8 2001/07/14 18:30:01 bwelling Exp $ --> +<!-- $Id: nsupdate.docbook,v 1.8.2.1 2001/11/27 18:57:40 gson Exp $ --> <refentry> <refentryinfo> @@ -463,7 +463,7 @@ The newly-added record has a 1 day TTL (86400 seconds) <programlisting> # nsupdate > prereq nxdomain nickname.example.com -> update add nickname.example.com CNAME somehost.example.com +> update add nickname.example.com 86400 CNAME somehost.example.com > </programlisting> </para> diff --git a/bin/nsupdate/nsupdate.html b/bin/nsupdate/nsupdate.html index 5fcc5733..b8e63dca 100644 --- a/bin/nsupdate/nsupdate.html +++ b/bin/nsupdate/nsupdate.html @@ -801,7 +801,7 @@ The newly-added record has a 1 day TTL (86400 seconds) CLASS="PROGRAMLISTING" ># nsupdate > prereq nxdomain nickname.example.com -> update add nickname.example.com CNAME somehost.example.com +> update add nickname.example.com 86400 CNAME somehost.example.com ></PRE ></P ><P diff --git a/bin/rndc/Makefile.in b/bin/rndc/Makefile.in index 6acefbbc..645e44a5 100644 --- a/bin/rndc/Makefile.in +++ b/bin/rndc/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2000, 2001 Internet Software Consortium. +# Copyright (C) 2000-2002 Internet Software Consortium. # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -13,7 +13,7 @@ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.32.2.1 2001/09/07 16:46:11 gson Exp $ +# $Id: Makefile.in,v 1.32.2.3 2002/02/12 12:02:03 marka Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -39,8 +39,8 @@ ISCCCDEPLIBS = ../../lib/isccc/libisccc.@A@ ISCDEPLIBS = ../../lib/isc/libisc.@A@ DNSDEPLIBS = ../../lib/dns/libdns.@A@ -RNDCLIBS = ${ISCCFGLIBS} ${ISCCCLIBS} ${ISCLIBS} @LIBS@ -RNDCDEPLIBS = ${ISCCFGDEPLIBS} ${ISCCCDEPLIBS} ${ISCDEPLIBS} +RNDCLIBS = ${ISCCFGLIBS} ${DNSLIBS} ${ISCCCLIBS} ${ISCLIBS} @LIBS@ +RNDCDEPLIBS = ${ISCCFGDEPLIBS} ${DNSDEPLIBS} ${ISCCCDEPLIBS} ${ISCDEPLIBS} CONFLIBS = ${DNSLIBS} ${ISCLIBS} @LIBS@ CONFDEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS} diff --git a/bin/rndc/rndc-confgen.8 b/bin/rndc/rndc-confgen.8 index de370d5d..92042eb2 100644 --- a/bin/rndc/rndc-confgen.8 +++ b/bin/rndc/rndc-confgen.8 @@ -1,5 +1,4 @@ -.\" -.\" Copyright (C) 2000, 2001 Internet Software Consortium. +.\" Copyright (C) 2001 Internet Software Consortium. .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -14,6 +13,8 @@ .\" NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION .\" WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" +.\" $Id: rndc-confgen.8,v 1.3.2.1 2002/02/08 03:57:20 marka Exp $ + .TH "RNDC-CONFGEN" "8" "Aug 27, 2001" "BIND9" "" .SH NAME rndc-confgen \- rndc key generation tool diff --git a/bin/rndc/rndc-confgen.c b/bin/rndc/rndc-confgen.c index cd2b619b..5d9354c9 100644 --- a/bin/rndc/rndc-confgen.c +++ b/bin/rndc/rndc-confgen.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rndc-confgen.c,v 1.9.2.1 2001/09/06 00:14:16 gson Exp $ */ +/* $Id: rndc-confgen.c,v 1.9.2.4 2001/11/30 01:10:09 gson Exp $ */ #include <config.h> @@ -66,7 +66,7 @@ Usage:\n\ [-s addr] [-t chrootdir] [-u user]\n\ -a: generate just the key clause and write it to keyfile (%s)\n\ -b bits: from 1 through 512, default %d; total length of the secret\n\ - -c keyfile: specify a alterate keyfile (requires -a)\n\ + -c keyfile: specify an alternate key file (requires -a)\n\ -k keyname: the name as it will be used in named.conf and rndc.conf\n\ -p port: the port named will listen on and rndc will connect to\n\ -r randomfile: a file containing random data\n\ @@ -139,7 +139,8 @@ main(int argc, char **argv) { int keysize; int entropy_flags = 0; int open_keyboard = ISC_ENTROPY_KEYBOARDMAYBE; - struct in_addr addr; + struct in_addr addr4_dummy; + struct in6_addr addr6_dummy; char *chrootdir = NULL; char *user = NULL; isc_boolean_t keyonly = ISC_FALSE; @@ -197,9 +198,9 @@ main(int argc, char **argv) { break; case 's': serveraddr = isc_commandline_argument; - if (inet_aton(serveraddr, &addr) == 0) + if (inet_pton(AF_INET, serveraddr, &addr4_dummy) != 1 && + inet_pton(AF_INET6, serveraddr, &addr6_dummy) != 1) fatal("-s should be an IPv4 or IPv6 address"); - break; case 't': chrootdir = isc_commandline_argument; @@ -279,8 +280,9 @@ main(int argc, char **argv) { char *buf; len = strlen(chrootdir) + strlen(keyfile) + 2; buf = isc_mem_get(mctx, len); - if (buf != NULL) { - fprintf(stderr, "isc_mem_get(%d) failed\n", len); + if (buf == NULL) { + fprintf(stderr, "isc_mem_get(%d) failed\n", + len); goto cleanup; } snprintf(buf, len, "%s/%s", chrootdir, keyfile); diff --git a/bin/rndc/rndc-confgen.html b/bin/rndc/rndc-confgen.html index 7c506920..2d11fa0e 100644 --- a/bin/rndc/rndc-confgen.html +++ b/bin/rndc/rndc-confgen.html @@ -1,10 +1,10 @@ <!-- - - Copyright (C) 2000, 2001 Internet Software Consortium. - - + - Copyright (C) 2001 Internet Software Consortium. + - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - + - - THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM - DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL @@ -14,6 +14,9 @@ - NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --> + +<!-- $Id: rndc-confgen.html,v 1.3.2.1 2002/02/08 03:57:21 marka Exp $ --> + <HTML ><HEAD ><TITLE diff --git a/bin/rndc/rndc.c b/bin/rndc/rndc.c index d0144e4c..5d5deb66 100644 --- a/bin/rndc/rndc.c +++ b/bin/rndc/rndc.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rndc.c,v 1.77.2.1 2001/10/17 18:26:01 gson Exp $ */ +/* $Id: rndc.c,v 1.77.2.2 2001/11/28 23:37:50 gson Exp $ */ /* * Principal Author: DCL @@ -89,7 +89,8 @@ static isc_socket_t *sock = NULL; static void usage(int status) { fprintf(stderr, "\ -Usage: %s [-c config] [-s server] [-p port] [-y key] [-V] command\n\ +Usage: %s [-c config] [-s server] [-p port]\n\ + [-k key-file ] [-y key] [-V] command\n\ \n\ command is one of the following:\n\ \n\ diff --git a/bin/tests/Makefile.in b/bin/tests/Makefile.in index 8d33c653..53a70361 100644 --- a/bin/tests/Makefile.in +++ b/bin/tests/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2001 Internet Software Consortium. +# Copyright (C) 1998-2002 Internet Software Consortium. # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -13,7 +13,7 @@ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.113 2001/07/26 21:33:28 gson Exp $ +# $Id: Makefile.in,v 1.113.2.1 2002/02/12 12:02:05 marka Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -279,9 +279,9 @@ journalprint: journalprint.@O@ ${ISCDEPLIBS} ${DNSDEPLIBS} ${LIBTOOL} ${PURIFY} ${CC} ${CFLAGS} -o $@ journalprint.@O@ \ ${DNSLIBS} ${ISCLIBS} ${LIBS} -cfg_test: cfg_test.@O@ ${ISCCFGDEPLIBS} ${ISCDEPLIBS} +cfg_test: cfg_test.@O@ ${ISCCFGDEPLIBS} ${DNSDEPLIBS} ${ISCDEPLIBS} ${LIBTOOL} ${CC} ${CFLAGS} -o $@ cfg_test.@O@ \ - ${ISCCFGLIBS} ${ISCLIBS} ${LIBS} + ${ISCCFGLIBS} ${DNSLIBS} ${ISCLIBS} ${LIBS} distclean:: rm -f headerdep_test.sh diff --git a/bin/tests/printmsg.c b/bin/tests/printmsg.c index 06d49181..6d78a8ea 100644 --- a/bin/tests/printmsg.c +++ b/bin/tests/printmsg.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-2001 Internet Software Consortium. + * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: printmsg.c,v 1.25 2001/05/09 18:47:49 bwelling Exp $ */ +/* $Id: printmsg.c,v 1.25.2.2 2002/02/08 03:57:23 marka Exp $ */ #include <config.h> @@ -51,7 +51,7 @@ static const char *rcodetext[] = { "FORMERR", "SERVFAIL", "NXDOMAIN", - "NOTIMPL", + "NOTIMP", "REFUSED", "YXDOMAIN", "YXRRSET", diff --git a/bin/tests/system/conf.sh.in b/bin/tests/system/conf.sh.in index 5b45b7df..5b45b7df 100644..100755 --- a/bin/tests/system/conf.sh.in +++ b/bin/tests/system/conf.sh.in diff --git a/bin/win32/BINDInstall/BINDInstallDlg.cpp b/bin/win32/BINDInstall/BINDInstallDlg.cpp index b8c2c8ce..fb9dda50 100644 --- a/bin/win32/BINDInstall/BINDInstallDlg.cpp +++ b/bin/win32/BINDInstall/BINDInstallDlg.cpp @@ -1,5 +1,5 @@ /* - * Portions Copyright (C) 2001 Internet Software Consortium. + * Portions Copyright (C) 2001, 2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: BINDInstallDlg.cpp,v 1.6.2.1 2001/08/30 20:27:55 gson Exp $ */ +/* $Id: BINDInstallDlg.cpp,v 1.6.2.3 2002/02/20 02:17:22 marka Exp $ */ /* * Copyright (c) 1999-2000 by Nortel Networks Corporation @@ -399,8 +399,6 @@ void CBINDInstallDlg::OnInstall() } } - ProgramGroup(); - try { CreateDirs(); @@ -434,8 +432,6 @@ void CBINDInstallDlg::OnInstall() RegCloseKey(hKey); } - ProgramGroup(); - if(m_startOnInstall && !m_reboot) StartBINDService(); } @@ -1,6 +1,6 @@ #! /bin/sh -# From configure.in Revision: 1.294.2.6 +# From configure.in Revision: 1.294.2.7 # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- ## Copyright 1996, 1997, 1998, 1999, 2000, 2001 @@ -8624,62 +8624,41 @@ rm -f conftest* # # Check for some other useful functions that are not ever-present. # -echo $ac_n "checking for strsep""... $ac_c" 1>&6 -echo "configure:8629: checking for strsep" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 8634 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char strsep(); 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 strsep(); +# We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC +# because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77 +# reportedly defines strsep() without declaring it in <string.h> when +# -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and +# 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() { - -/* 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_strsep) || defined (__stub___strsep) -choke me -#else -strsep(); -#endif - +char *sp; char *foo = strsep(&sp, "."); ; return 0; } EOF -if { (eval echo configure:8657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_func_strsep=yes" + echo "$ac_t""yes" 1>&6; ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func_strsep=no" + echo "$ac_t""no" 1>&6; ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1" fi rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'strsep`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP" -else - echo "$ac_t""no" 1>&6 -ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1" -fi echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6 -echo "configure:8678: checking for vsnprintf" >&5 +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 8683 "configure" +#line 8662 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char vsnprintf(); below. */ @@ -8702,7 +8681,7 @@ vsnprintf(); ; return 0; } EOF -if { (eval echo configure:8706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +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 @@ -8727,12 +8706,12 @@ fi echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:8731: checking for strerror" >&5 +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 8736 "configure" +#line 8715 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char strerror(); below. */ @@ -8755,7 +8734,7 @@ strerror(); ; return 0; } EOF -if { (eval echo configure:8759: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +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 @@ -8789,17 +8768,17 @@ fi # but that's defined elsewhere since we don't use configure on Win32. # echo $ac_n "checking printf format modifier for 64-bit integers""... $ac_c" 1>&6 -echo "configure:8793: checking printf format modifier for 64-bit integers" >&5 +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 8799 "configure" +#line 8778 "configure" #include "confdefs.h" main() { exit(!(sizeof(long long int) == sizeof(long int))); } EOF -if { (eval echo configure:8803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +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"' @@ -8819,12 +8798,12 @@ fi # Security Stuff # echo $ac_n "checking for chroot""... $ac_c" 1>&6 -echo "configure:8823: checking for chroot" >&5 +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 8828 "configure" +#line 8807 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char chroot(); below. */ @@ -8847,7 +8826,7 @@ chroot(); ; return 0; } EOF -if { (eval echo configure:8851: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +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 @@ -8881,17 +8860,17 @@ case "$enable_linux_caps" in do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8885: checking for $ac_hdr" >&5 +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 8890 "configure" +#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:8895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (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* @@ -8925,17 +8904,17 @@ for ac_hdr in sys/prctl.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:8929: checking for $ac_hdr" >&5 +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 8934 "configure" +#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:8939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (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* @@ -8966,9 +8945,9 @@ done # BSD/OS, and perhaps some others, don't define rlim_t. # echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 -echo "configure:8970: checking for type rlim_t" >&5 +echo "configure:8949: checking for type rlim_t" >&5 cat > conftest.$ac_ext <<EOF -#line 8972 "configure" +#line 8951 "configure" #include "confdefs.h" #include <sys/types.h> @@ -8978,7 +8957,7 @@ int main() { rlim_t rl = 19671212; return (0); ; return 0; } EOF -if { (eval echo configure:8982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +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" @@ -8989,12 +8968,12 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6 -echo "configure:8993: checking type of rlim_cur" >&5 +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 8998 "configure" +#line 8977 "configure" #include "confdefs.h" #include <sys/types.h> @@ -9002,7 +8981,7 @@ else #include <sys/resource.h> main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));} EOF -if { (eval echo configure:9006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +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" @@ -9015,7 +8994,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: this cannot happen" 1>&2; exit 1; } else cat > conftest.$ac_ext <<EOF -#line 9019 "configure" +#line 8998 "configure" #include "confdefs.h" #include <sys/types.h> @@ -9023,7 +9002,7 @@ else #include <sys/resource.h> main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));} EOF -if { (eval echo configure:9027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +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" @@ -9036,7 +9015,7 @@ if test "$cross_compiling" = yes; then { echo "configure: error: this cannot happen" 1>&2; exit 1; } else cat > conftest.$ac_ext <<EOF -#line 9040 "configure" +#line 9019 "configure" #include "confdefs.h" #include <sys/types.h> @@ -9044,7 +9023,7 @@ else #include <sys/resource.h> main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));} EOF -if { (eval echo configure:9048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +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" @@ -9168,7 +9147,7 @@ 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:9172: checking for $ac_word" >&5 +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 @@ -9215,7 +9194,7 @@ 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:9219: checking for $ac_word" >&5 +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 @@ -9258,7 +9237,7 @@ 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:9262: checking for $ac_word" >&5 +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 @@ -9314,7 +9293,7 @@ test -n "$PDFJADETEX" || PDFJADETEX="pdfjadetex" SGMLCATALOG="" echo $ac_n "checking for catalog""... $ac_c" 1>&6 -echo "configure:9318: checking for catalog" >&5 +echo "configure:9297: checking for catalog" >&5 for d in $sgmltrees do f=$d/catalog @@ -9356,7 +9335,7 @@ done HTMLSTYLE="" echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6 -echo "configure:9360: checking for html/docbook.dsl" >&5 +echo "configure:9339: checking for html/docbook.dsl" >&5 for d in $stylepath do f=$d/html/docbook.dsl @@ -9377,7 +9356,7 @@ fi PRINTSTYLE="" echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6 -echo "configure:9381: checking for print/docbook.dsl" >&5 +echo "configure:9360: checking for print/docbook.dsl" >&5 for d in $stylepath do f=$d/print/docbook.dsl @@ -9403,7 +9382,7 @@ fi XMLDCL="" echo $ac_n "checking for docbook/dsssl/modular/dtds/decls/xml.dcl""... $ac_c" 1>&6 -echo "configure:9407: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5 +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 @@ -9429,7 +9408,7 @@ fi DOCBOOK2MANSPEC="" echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6 -echo "configure:9433: checking for docbook2X/docbook2man-spec.pl" >&5 +echo "configure:9412: checking for docbook2X/docbook2man-spec.pl" >&5 for d in $sgmltrees do f=$d/docbook2X/docbook2man-spec.pl diff --git a/configure.in b/configure.in index c3ccf7f9..fa75849a 100644 --- a/configure.in +++ b/configure.in @@ -13,7 +13,7 @@ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -AC_REVISION($Revision: 1.294.2.6 $) +AC_REVISION($Revision: 1.294.2.7 $) AC_INIT(lib/dns/name.c) AC_PREREQ(2.13) @@ -1348,9 +1348,18 @@ found_rt_iflist # # Check for some other useful functions that are not ever-present. # -AC_CHECK_FUNC(strsep, - [ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"], - [ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"]) + +# We test for strsep() using AC_TRY_LINK instead of AC_CHECK_FUNC +# because AIX 4.3.3 with patches for bos.adt.include to version 4.3.3.77 +# reportedly defines strsep() without declaring it in <string.h> when +# -D_LINUX_SOURCE_COMPAT is not defined [RT #2190], and +# AC_CHECK_FUNC() incorrectly succeeds because it declares +# the function itself. +AC_MSG_CHECKING(for correctly declared strsep()) +AC_TRY_LINK([#include <string.h>], [char *sp; char *foo = strsep(&sp, ".");], + [AC_MSG_RESULT(yes); ISC_PLATFORM_NEEDSTRSEP="#undef ISC_PLATFORM_NEEDSTRSEP"], + [AC_MSG_RESULT(no); ISC_PLATFORM_NEEDSTRSEP="#define ISC_PLATFORM_NEEDSTRSEP 1"]) + AC_CHECK_FUNC(vsnprintf, [ISC_PLATFORM_NEEDVSNPRINTF="#undef ISC_PLATFORM_NEEDVSNPRINTF"], [ISC_EXTRA_OBJS="$ISC_EXTRA_OBJS print.$O" diff --git a/contrib/idn/mdnkit/ChangeLog b/contrib/idn/mdnkit/ChangeLog index 2c7f660b..da26f2b4 100644 --- a/contrib/idn/mdnkit/ChangeLog +++ b/contrib/idn/mdnkit/ChangeLog @@ -1,3 +1,421 @@ +2001-12-06 + * 2.2.3 release. + + * lib/uticode.c: fix a bug in mdn__unicode_decompose() that assumes + sizeof(size_t) equals to sizeof(int). + * lib/converter.c: always include <mdn/utf5.h>. + +2001-12-03 + * DISTFILES: add patch/bind9/bind-9.2.0.patch. + + * lib/checker.c, lib/mapper.c, lib/nameprep.c, lib/nameprepdata.c, + lib/normalizer.c: recognize "nameprep-06". + * lib/mdn.conf.sample.in, man/mdn.conf.5.in, tools/mdnconv/mdnconv.1: + add description about "nameprep-06". + +2001-11-28 + + * lib/Makefile.in, tools/runmdn/Makefile.in: Change LIB_REVISION + from 2 to 3. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2.3". + +2001-11-21 + * tools/runmdn/stub.c: fix type mismatch bug of `fp'. + * lib/converter.c: always include <mdn/debug.h>. + +2001-10-31 + * 2.2.2 release. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2.3". + + * configure.in: on NetBSD, use `:' as a separator of LD_PRELOAD + if /usr/bin/grep is ELF binary, use ` ' otherwise. + * wsock/config/mdnconf.tcl: update version number to 2.2.2. + + * README, README.ja: update the list of supported systems. + +2001-10-30 + * wsock/config/mdnconf.tcl: update version number to 2.2.1. + +2001-10-29 + * 2.2.1 release. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2.1". + + * lib/Makefile.in, tools/runmdn/Makefile.in: Change LIB_REVISION + from 1 to 2. + +2001-10-17 + * lib/checker.c (mdn_checker_lookup): Fix a serious bug that the + function overlooks a prohibited character. + +2001-09-19 + * 2.2 release. + +2001-09-17 + * NEWS: add description about deletion of `allow-utf8' to "Major + changes in version 2.1". + + * README, README.ja: add some platforms to the list of supported + systems. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2". + +2001-09-14 + * lib/amcacez.c, include/mdn/amcacez.h: update draft version. + +2001-09-12 + * wsock/config/mdnconf.tcl: update version number. + +2001-09-11 + * INSTALL.ja: The title is fixed. + +2001-09-10 + * Makefile.in: add dummy target 'force' to work around a problem + in cygwin, where the existance of "INSTALL" file disturbs + "make install". + * lib/make.wnt: add rules for amcace[vwz].o and mace.o. + * util/SparseMap.pm, util/generate_nameprep_data.pl, + util/generate_normalize_data.pl: add 'const' qualification to + the generated (large) constant tables, for better data sharing. + * lib/nameprepdata.c, lib/unicodedata_301.c, lib/unicodedata_310.c: + regenerated using above scripts. + * lib/nameprep.c, lib/nameprep_template.c, lib/unicode.c, + lib/unicode_template.c: accommodate declarations to the above + changes. + +2001-08-28 + * 2.2rc1 release. + + * DISTFILES: delete patch/bind9/bind-9.1.2-patch. + + * include/mdn/version.h: set MDNKIT_VERSION to 2.2rc1. + +2001-08-27 + * include/mdn/amcacez.h, lib/amcacez.c: update to conform to + version 0.3.0 (draft-ietf-idn-amc-ace-z-00.txt). + + * configure.in, lib/amcacez.c, INSTALL, INSTALL.ja: define "zq--" + as new default ACE prefix for AMC-ACE-Z. + +2001-08-21 + * lib/mdn.conf.sample.in, man/mdn.conf.5.in, tools/mdnconv/mdnconv.1: + undocument unicode-form-{c,d,kd}, unicode-{upper,lower,fold}case, + ascii-{upper,lower}case and nameprep-{02,04}. + +2001-08-20 + * tools/runmdn/runmdn.1: Use the term "codeset" rather than + "encoding". + +2001-08-17 + * INSTALL: fix typo. + +2001-08-15 + * README, README.ja: show a list of supported systems as a table. + + * tools/runmdn/runmdn.in: parse command line options, and recognize + option `-e' which sets local encoding. + * tools/runmdn/runmdn.1: add description about `-e' option. + * tools/runmdn/Makefile.in: update `runmdn' if it is older than + `runmdn.in'. + + * INSTALL and INSTALL.ja: new files. + * README, README.ja: `Compilation and Intallation' section is moved + to INSTALL and INSTALL.ja. + * DISTFILES: add INSTALL and INSTALL.ja. + + * lib/converter.c, README, README.ja: unless --enable-extra-ace + option to configure is specified, support only three ACEs: + AMC-ACE-Z, RACE and DUDE. + + * lib/namrprep.c, lib/converter.c, lib/checker.c, lib/mapper.c: + delete `nameprep-02' and `nameprep-04' supports. + + * lib/mdn.conf.sample.in, man/mdn.conf.5.in, tools/mdnconv/mdnconv.1: + delete description about `nameprep-02', `nameprep-04' and extra ACEs. + +2001-08-14 + * README, README.ja: update information about compilation problem + of libiconv-1.6.1 on NetBSD. + +2001-08-13 + * README, README.ja: revise description of compilation and + installation process. + * tools/mdnconv/mdnconv.c: revise error messages displayed + when default input/output codeset is wrong. + +2001-08-06 + * 2.2beta3 release. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2beta3". + + * README, README.ja: describe CPU architure of FreeBSD on which + we have tested. + +2001-08-01 + * util/generate_nameprep_data.pl: add pragma 'use bytes;' to + avoid outputing incorrect map data when perl 5.6.1 is used. + * lib/nameprepdata.c: add data for nameprep-04 and -05. + * lib/nameprep.c: add support for 'nameprep-04' and 'nameprep-05'. + current version is now nameprep-05. + * lib/checker.c, lib/mapper.c: add 'nameprep-04' and 'nameprep-05'. + * lib/unicodedata.c: removed. + * lib/unicodedata_301.c, lib/unicodedata_310.c: created. + both contains various Unicode table of version 3.0.1 and 3.1.0. + * lib/unicode_template.c: created. contains helper functions for + each Unicode versions. + * include/mdn/unicode.h, lib/unicode.c: add new interface + functions 'mdn__unicode_create' and 'mdn__unicode_destroy'. + now all existing functions take an extra argument which specifies + the version of Unicode standard. + * include/mdn/unicode.h, lib/unicode.c + * include/mdn/unormalize.h, lib/unormalize.c: change interface + so that the version of Unicode standard can be specified. + * lib/normalizer.c: add bunch of normalization schemes, + unicode-from-{c,d,kc,kd}/{3.0.1,3.1.0}, nameprep-{04,05}. + use new unormalize module interface. + * DISTFILES, lib/Makefile.in: add unicode_template.c, + unicodedata_301.c and unicodedata_310.c. remove unicodedata.c. + * util/generate_normalize_data.pl: add -prefix option. + * man/mdn.conf.5.in, tools/mdnconv/mdnconv.1: add description of + newly added schemes. + * lib/mdn.conf.sample.in: likewise. + +2001-07-31 + * include/mdn/res.h, lib/res.c: add new functions and macros + mdn_res_nameprep() and mdn_res_nameprepcheck(). + * include/mdn/api.h: add new macro mdn_nameprepcheck(). + +2001-07-27 + * README, README.ja: describe `--with-utf-6-prefix'. + +2001-07-26 + * tools/mdnconv/mdnconv.1: add a description on the nameprep check + performed in reverse conversion mode. + * tools/mdnconv/util.c: fix typo in comment. + + * tools/mdnconv/mdnconv.c: don't perform selective-decode or + selective-decode if both `-whole' and `-reverse' options are specified. + * tools/mdnconv/mdnconv.c: perform NAMEPREP unassigned check if both + `-reverse' and `-unassigncheck' options are specified + + * tools/mdnconv/mdnslookup.in: add missing quotation. + + * DISTFILES: add patch/bind9/bind-9.1.3-patch. + +2001-07-25 + * tools/mdnconv/mdnslookup.in: new file. + * tools/mdnconv/Makefile.in: `all' target also depends on `mdnslookup'. + generate `mdnslookup' from `mdnslookup.in'. + * README, README.ja: add the ``Check your configuration'' section. + * DISTFILES: add tools/mdnconv/mdnslookup.in. + + * tools/mdnconv/Makefile.in: honor LDFLAGS. + * lib/amcacez.c: do some optimization. + +2001-07-24 + * README, README.ja: add TOC, ``Supported systems'' section and + ``Other configure options'' subsection. + +2001-07-23 + * tools/mdnconv/mdnconv.1, tools/runmdn/runmdn.1: add the ``LOCAL + CODESET'' section. + +2001-07-18 + * 2.2beta2 release. + + * README, README.ja: update version number in the title. + +2001-07-17 + * include/mdn/version.h: set MDNKIT_VERSION to "2.2beta2". + + * configure.in: fix result messages of cheking gethostbyaddr() + and getnameinfo() flavors. display "none" if the function is + not found. + +2001-07-16 + * include/mdn/amcacez.h, lib/amcacez.c: update to conform to + version 0.2.1, which is the version of -00 draft. + +2001-07-12 + * README, README.ja: explain `--enable-debug' option. + +2001-07-11 + * configure.in: add `--enable-debug' option. + if this option is specified, add "-DDEBUG" to CFLAGS. + +2001-07-10 + * configure.in: check flavor of getnameinfo(). + * configure.in: test program for checking flavor of gethostbyaddr() + includes <sys/types.h> and <sys/socket.h>, since some system defines + `socklen_t' in either file. + * configure.in: define GNI_SALEN_T, GNI_HOSTLEN_T, GNI_SERVLEN_T + and GNI_FLAGS_T. + * tools/runmdn/resolver.c, tools/runmdn/stub.c, tools/runmdn/stub.h: + use GNI_SALEN_T, GNI_HOSTLEN_T, GNI_SERVLEN_T and GNI_FLAGS_T to + represent types of arguments to getnameinfo(). + + * include/mdn/logmacro.h: enable trace-level log even if compiled + without DEBUG option. + * lib/log.c: slightly optimize mdn_log_getlevel(), as it is called + number of times from everywhere. + +2001-07-09 + * lib/res.c: in mdn_res_nameconv(), procedures of insn `!m', `!n' + and `!N' converted an input string into a result of NAMEPREP, but + it must do NAMEPREP check only. fixed. + +2001-07-06 + * lib/msgtrans.c: perform NAMEPREP check at decoding a name. + * lib/api.c, include/mdn/api.h: mdn_decodename() accepts + MDN_UNASCHECK action. + + * mdnsproxy/translate.c: fix typo in a warning message. + + * include/mdn/res.h, lib/mdn/res.c: conversion to alternate encoding + is no longer supported. + * include/mdn/resconf.h, lib/resconf.c: no longer support + alternate encoding, though functions related to alternate encoding + such as mdn_resconf_setalternateconverter() are still remained. + ignore `alternate-encoding' entry in a configuration file. + * lib/mdn.conf.sample.in: delete `alternate-encoding' entry. + * man/mdn.conf.5.in: delete "ALTERNATE-ENCODING ENTRY" section. + delete `alternate-encoding' entry in the sample configuration. + * man/libmdn.3.in: delete description about alternate encoding. + + * lib/res.c: mdn_res_nameconv() doesn't support insn `a' or `A' + any longer. nameconv_A() and nameconv_a() are removed. + +2001-07-05 + * include/mdn/version.h: set MDNKIT_VERSION to "2.2snap0705". + +2001-07-04 + * include/mdn/amcacez.h, lib/amcacez.c: created. + * include/mdn/Makefile.in, lib/Makefile.in, tools/runmdn/Makefile.in: + add above new files. + * DISTFILES: add above new files. + * lib/converter.c: add AMC-ACE-Z. + * configure.in: add prefix configuration option + (--with-amc-ace-z-prefix) for this ACE. + * configure: rebuilt. + * lib/amcacew.c: correct a bug in input range check. + + * include/mdn/api.h: add MDN_NAMEPREP to MDN_DECODE_APP. + * lib/mdn/api.c: mdn_decodename() recognizes MDN_NAMEPREP action. + + * include/mdn/converter.h: define encoding types: MDN_NONACE, + MDN_ACE_STRICTCASE and MDN_ACE_LOOSECASE. + * include/mdn/converter.h, lib/converter.c: add new function + mdn_converter_encodingtype(). + * include/mdn/converter.h, lib/converter.c: 3rd argument of + mdn_converter_register() is now `encoding_type'. + + * include/mdn/res.h, lib/mdn/res.c: add new insn `!m', `!n', `!p', + `!N' and `!u' to mdn_res_nameconv(). + * include/mdn/res.h, lib/mdn/res.c: mdn_res_dnstoucs(...) is + equivalent to mdn_res_nameconv("i!N", ...). + + * lib/checker.c, lib/mapper.c: fix a bug that allocated memory is + not disposed if input name is too long. + + * lib/checker.c: mdn_checker_lookup() returns `mdn_success' if + registered character is found in an input string. + +2001-07-03 + * configure.in: check if the codeset name for UTF-8 encoding (`UTF-8', + which is default, or the one specified with --with-utf8 option) is + valid, and give a warning message if it doesn't seem so. + * configure: rebuilt. + +2001-07-02 + * configure.in: check if `iconv.h' exists in the directory specified + by --with-iconv-include=DIR, or in the `PREFIX/include' directory + specified by --with-libiconv=PREFIX. + * configure.in: check if C compiler can find `iconv.h'. + +2001-06-25 + * 2.2beta1 release. + + * include/mdn/version.h: set MDNKIT_VERSION to "2.2beta1", and set + MDNKIT_MINOR_VERSION to 2. + * lib/Makefile.in, tools/runmdn/Makefile.in: Set library version + (LIB_CURRENT:LIB_REVISION:LIB_AGE) to 7:1:0. + +2001-06-19 + * configure.in: add missing double quotation mark (") in + AC_OUTPUT_COMMANDS. + * include/mdn/dude.h, lib/dude.c: update to conform to -02 spec. + * include/mdn/amcacev.h, lib/amcacev.c: created. + * include/mdn/amcacew.h, lib/amcacew.c: created. + * include/mdn/mace.h, lib/mace.c: created. + * include/mdn/Makefile.in, lib/Makefile.in, tools/runmdn/Makefile.in: + add above new files. + * DISTFILES: add above new files. + * lib/converter.c: add AMC-ACE-V, AMC-ACE-W and MACE. + * configure.in: add prefix configuration options (--with-*-prefix) + for these new ACEs. + * configure: rebuilt. + * include/mdn/version.h: set MDNKIT_VERSION to "2.2snap0619". + + * configure.in: add `--with-iconv-include' and `--with-libiconv' + options. + * lib/Makefile.in, mdnsproxy/Makefile.in, tools/mdnconv/Makefile.in, + tools/runmnd/Makefile.in: define ICONVINC and append its value to + INCS. + +2001-06-18 + * mdnsproxy/logging.c: fix a bug that whether libmdn message is + logged or not is determined by `log-level', not `libmdn-log-level'. + + * configure.in: also check glib-2.2 flavor of gethostbyaddr(). + * configure.in, include/config.h: define GHBA_ADDR_T which is + type of 1st argument to gethostbyaddr() and gethostbyaddr_r(). + * configure.in, tools/Makefile.in: if parameter type list of + gethostbyaddr() is unknown, nothing will be built in `tools/runmdn' + directory. + * tools/runmdn/resolver.c, tools/runmdn/stub.c, tools/runmdn/stub.h: + use GHBA_ADD_T as type of 1st parameter to gethostbyaddr() and + gethostbyaddr_r(). + * acconfig.h: delete GETHOST_R_GLIBC_FLAVOR and GHBA_ADDRLEN_T. + +2001-06-14 + * mdnsproxy/logging.c: shorten a program. use vfprintf() rather + than vsprintf()+fputs(). + +2001-06-12 + * lib/converter.c: output warning message if iconv() or iconv_open() + fails. + * lib/api.c, lib/res.c: output 256 characters maximum, when they + output a string to be translated and its result as trace message. + * lib/msgtrans.c: log a string to be translated and its result with + the priority INFO. + + * lib/res.c, include/mdn/res.h: use the term `insn' rather than + `action', for the 2nd argument to mdn_res_nameconv(). + +2001-06-07 + * include/mdn/amcacer.h, lib/amcacer.c: update to meet -01 spec. + +2001-06-04 + * mdnsproxy/mdnsproxy.h: define LOGMODE_STDERR. + * mdnsproxy/logging.c: output messages to standard error if the + configuration entry `log-file' is set to `stderr'. + * mdsproxy/logging.c: merge libmdn_logproc_syslog() and + libmdn_logproc_file() into libmdn_logproc(). + * mdsproxy/logging.c: insert date string to log messages if + mdnsproxy logs events to regular file. + * mdnsproxy/logging.c: fix a bug that mdnsproxy doesn't turn over + a log file correctly. + * mdnsproxy/unxmain.c: do not close file descriptor 2. + + * lib/resconf.c: 2nd arguemnt to the following functions can be NULL: + mdn_resconf_setalternateconverter(), mdn_resconf_setdelimitermap(), + mdn_resconf_setidnconverter(), mdn_resconf_setlocalconverter(), + mdn_resconf_setlocalmapselector(), mdn_resconf_setmapper(), + mdn_resconf_setnormalizer(), mdn_resconf_setprohibitchecker(), + mdn_resconf_setunassignedchecker(). + 2001-06-01 * 2.1 release. diff --git a/contrib/idn/mdnkit/DISTFILES b/contrib/idn/mdnkit/DISTFILES new file mode 100644 index 00000000..e9b2334f --- /dev/null +++ b/contrib/idn/mdnkit/DISTFILES @@ -0,0 +1,200 @@ +# $Id: DISTFILES,v 1.1.2.1 2002/02/08 12:12:15 marka Exp $ +README +README.ja +INSTALL +INSTALL.ja +ChangeLog +DISTFILES +LICENSE.txt +Makefile.in +NEWS +make.wnt +acconfig.h +aclocal.m4 +config.guess +config.sub +ltconfig +ltmain.sh +configure.in +configure +install-sh +mkinstalldirs +include/Makefile.in +include/config.h.in +include/config.h.win +include/mdn/Makefile.in +include/mdn/ace.h +include/mdn/altdude.h +include/mdn/amcacem.h +include/mdn/amcaceo.h +include/mdn/amcacer.h +include/mdn/amcacev.h +include/mdn/amcacew.h +include/mdn/amcacez.h +include/mdn/api.h +include/mdn/assert.h +include/mdn/brace.h +include/mdn/checker.h +include/mdn/converter.h +include/mdn/debug.h +include/mdn/delimitermap.h +include/mdn/dn.h +include/mdn/dude.h +include/mdn/filechecker.h +include/mdn/filemapper.h +include/mdn/lace.h +include/mdn/localencoding.h +include/mdn/log.h +include/mdn/logmacro.h +include/mdn/mace.h +include/mdn/mapper.h +include/mdn/mapselector.h +include/mdn/msgheader.h +include/mdn/msgtrans.h +include/mdn/nameprep.h +include/mdn/normalizer.h +include/mdn/race.h +include/mdn/res.h +include/mdn/resconf.h +include/mdn/result.h +include/mdn/selectiveencode.h +include/mdn/strhash.h +include/mdn/ucsmap.h +include/mdn/ucsset.h +include/mdn/unicode.h +include/mdn/unormalize.h +include/mdn/utf5.h +include/mdn/utf6.h +include/mdn/utf8.h +include/mdn/util.h +include/mdn/version.h +lib/Makefile.in +lib/ace.c +lib/altdude.c +lib/amcacem.c +lib/amcaceo.c +lib/amcacer.c +lib/amcacev.c +lib/amcacew.c +lib/amcacez.c +lib/api.c +lib/brace.c +lib/checker.c +lib/converter.c +lib/debug.c +lib/delimitermap.c +lib/dn.c +lib/dude.c +lib/filechecker.c +lib/filemapper.c +lib/lace.c +lib/localencoding.c +lib/log.c +lib/make.wnt +lib/mace.c +lib/mapper.c +lib/mapselector.c +lib/msgheader.c +lib/msgtrans.c +lib/nameprep.c +lib/nameprep_template.c +lib/nameprepdata.c +lib/normalizer.c +lib/race.c +lib/res.c +lib/resconf.c +lib/result.c +lib/selectiveencode.c +lib/strhash.c +lib/ucsmap.c +lib/ucsset.c +lib/unicode.c +lib/unicode_template.c +lib/unicodedata_301.c +lib/unicodedata_310.c +lib/unormalize.c +lib/utf5.c +lib/utf6.c +lib/utf8.c +lib/util.c +lib/version.c +lib/mdn.conf.sample.in +mdnsproxy/Makefile.in +mdnsproxy/acl.c +mdnsproxy/logging.c +mdnsproxy/make.wnt +mdnsproxy/mdnsproxy.8.in +mdnsproxy/mdnsproxy.conf.sample +mdnsproxy/mdnsproxy.def +mdnsproxy/mdnsproxy.h +mdnsproxy/message.c +mdnsproxy/os2main.c +mdnsproxy/proxycnf.c +mdnsproxy/proxycnf.h +mdnsproxy/server.c +mdnsproxy/translate.c +mdnsproxy/unxmain.c +mdnsproxy/winmain.c +mdnsproxy/winserv.c +mdnsproxy/winserv.h +tools/Makefile.in +tools/mdnconv/Makefile.in +tools/mdnconv/mdnconv.c +tools/mdnconv/util.c +tools/mdnconv/util.h +tools/mdnconv/mdnconv.1 +tools/mdnconv/mdnslookup.in +tools/rpm/mdnsproxy.init +tools/rpm/mdnkit.spec +tools/runmdn/Makefile.in +tools/runmdn/resolver.c +tools/runmdn/stub.c +tools/runmdn/stub.h +tools/runmdn/runmdn.1 +tools/runmdn/runmdn.in +man/Makefile.in +man/libmdn.3.in +man/mdn.conf.5.in +patch/bind8/bind-8.2.3-patch +patch/bind9/bind-9.1.3-patch +patch/bind9/bind-9.2.0-patch +patch/libiconv/libiconv-1.6.1.patch +patch/squid/squid-2.4.STABLE1-patch +win/README.WIN +wsock/README.txt +wsock/README_j.txt +wsock/make.wnt +wsock/common/checkdll.c +wsock/common/convert.c +wsock/common/dllmain.c +wsock/common/dump.c +wsock/common/encoding.c +wsock/common/hook.c +wsock/common/jpnicmdn.def +wsock/common/jpnicmdn.h +wsock/common/make.wnt +wsock/common/printf.c +wsock/config/make.wnt +wsock/config/mdnconf.tcl +wsock/wsock11/dlldef.h +wsock/wsock11/dllfunc.c +wsock/wsock11/dllload.c +wsock/wsock11/dllmain.c +wsock/wsock11/dllstub.c +wsock/wsock11/make.wnt +wsock/wsock11/wsock32.def +wsock/wsock11/wsock32o.def +wsock/wsock20/dlldef.h +wsock/wsock20/dllfunc.c +wsock/wsock20/dllload.c +wsock/wsock20/dllmain.c +wsock/wsock20/dllstub.c +wsock/wsock20/make.wnt +wsock/wsock20/ws2_32.def +wsock/wsock20/ws2_32o.def +util/SparseMap.pm +util/UCD.pm +util/generate_nameprep_data.pl +util/generate_normalize_data.pl +map/Makefile.in +map/jp.map diff --git a/contrib/idn/mdnkit/INSTALL b/contrib/idn/mdnkit/INSTALL new file mode 100644 index 00000000..558ea433 --- /dev/null +++ b/contrib/idn/mdnkit/INSTALL @@ -0,0 +1,248 @@ + + mDNkit + Compilation and Installation + Japan Network Information Center (JPNIC) + + +This file explains how to compile and install the source package. +These procedures take the following steps: + + + Prerequisite: making iconv() available + + System Configuration: running `configure' script + + Compilation: running `make' + + Installation: running `make install' + + Site Configuration: tailoring `mdn.conf' + + Configuration Check (optional) + + +0. Prerequisite + +If your system's library does not have iconv() function, which is a +general codeset conversion utility, install it as an external library. +You also need external library if the system's implementation cannot +handle UTF-8 encoding, or it doesn't support some encodings which your +client applications uses. + +You can get a free version of iconv() implementation (under LGPL +license, aka GNU libiconv) from: + + http://clisp.cons.org/~haible/packages-libiconv.html + +*Note* + GNU libiconv-1.6.1 have a compilation problem on NetBSD 1.5. There + is a patch file for the bug under patch/libiconv directory. If you + are a NetBSD 1.5 user and found a problem in compiling libiconv, + apply the patch and try again. The patch file contains brief + instructions on how to apply it at the beginning. + + +1. Running configure script + +Run `configure' script in the top directory. This checks various +characteristics of your system and it will create Makefiles and +config.h appropriate for your system. + + % ./configure + +`configure' accepts many options. Here is a list of some important +options. + + --prefix=PREFIX + Specifies the prefix of install directories of mDNkit. The + default is /usr/local. + + --with-libiconv=LIBICONV_PREFIX + If you have installed GNU libiconv and would like to link it + to mDNkit, specify this option. The argument LIBICONV_PREFIX + is install prefix of GNU libiconv. If the argument is omitted, + PREFIX (derived from --prefix=PREFIX option) is assumed. + + --with-libiconv is shorthand option for GNU libiconv. + + --with-libiconv=/usr/local + + This is equivalent to: + + --with-iconv-include='-I/usr/local/include' + --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' + + If both the shorthand option (--with-libiconv) and longhand + options (--with-iconv-include and/or --with-iconv) are specified, + the longhand options have priority. + + --with-iconv-include=ICONV_INCDIR + If the header file "iconv.h" resides in a directory where your + C compiler doesn't search by default, specify the directory as + DIR like this: + + --with-iconv-include=/usr/local/include + + --with-iconv=ICONV_LIB + If your libc doesn't contain iconv(), specify the library + that contains iconv(). For example, if iconv() is libiconv + in /usr/local/lib, you should specify: + + --with-iconv="-L/usr/local/lib -liconv" + + Note that if the library is a shared one, you might also want + to specify -R option, like: + + --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" + + --with-iconv-sofile=SOFILE_PATH + ``runmdn'' command in this kit needs to know the pathname of + shared library file that contains iconv(), if iconv() is not + part of libc. mDNkit tries to find out the pathname from the + informaiton provided by ``--with-iconv'' option described + above. But when it fails, you have to specify it with this + option, like: + + --with-iconv-sofile=/usr/local/lib/libiconv.so.2.0 + + --with-utf8=UTF8_NAME + If your iconv() (precisely, iconv_open()) does not accept + "UTF-8" as the name of UTF-8 encoding, specify the name for + it. For example if your iconv() uses "utf8" instead, you + should specify: + + --with-utf8=utf8 + + +2. Other configure options + +The configure script has many other options though they are not widely +used: + + --with-preference=PREFERENCE + This option sets the preference for the sample mDNkit + configuration file (mdn.conf.sample). Also this option + enables to install default configuration file (mdn.conf) + if the file didn't exist. + The only preference supported by this version is "jp". + + --with-amc-ace-z-prefix=AMCZ_PREFIX + AMC-ACE-Z is a proposed encoding for multilingual domain name + in DNS protocol data. It requires a specific prefix string + to distinguish domain names encoded by them from normal ASCII + domain names, but the current Internet draft of AMC-ACE-Z + doesn't define prefix. You can specify the prefix with this + option. Otherwise mDNkit defines "zq--" as the prefix. + + --with-race-prefix=RACE_PREFIX + --with-dude-prefix=DUDE_PREFIX + Also RACE and DUDE are encodings for multilingual domain name, + but they are obsolete. Since Internet drafts for these + encodings defines ACE prefixes, mDNkit uses them by default, + but you can specify prefix with these options. + + --exec-prefix=EXEC_PREFIX + Specifies the prefix of install directories for machine-specific + files. The default is PREFIX (derived from ``--prefix=PREFIX'' + and its default is /usr/local). + + --sbindir=SBINDIR + Specifies the install directory for mdnsproxy. The default is + EXEC_PREFIX/sbin. + + --bindir=BINDIR + Specifies the install directory for mdnconv and runmdn. + The default is EXEC_PREFIX/bin. + + --libdir=LIBDIR + Specifies the install directory for the MDN library (libmdn). + The default is EXEC_PREFIX/lib. + + --includedir=INCDIR + Specifies the install directory for the header files of the MDN + library. The default is PREFIX/include. + + --sysconfdir=SYSCONFDIR + Specifies the install directory for sample configuration files + of the MDN Library and mdnsproxy. The default is PREFIX/etc. + + --mandir=MANDIR + Specifies the base install directory for online manuals. + The default is PREFIX/man. + + --datadir=DATADIR + Specifies the base install directory for machine independent + data files. The default is PREFIX/share. Some data files for + mDNkit will be put under the DATADIR/mdnkit directory. + + --localstatedir=LOCALSTATEDIR + --with-logdir=LOGDIR + LOGDIR specifies the directory where mdnsproxy outputs log + files by default. Its default value is LOCALSTATEDIR/mdnsproxy, + and the default value of LOCALSTATEDIR is PREFIX/var. + + --enable-debug + Enable debugging codes. The fault is "no". + + --enable-shared + Build shared library. The fault is "yes". + + --enable-static + Build static library. The fault is "yes". + +To see the list of available options, you should run it with --help +option. + + % ./configure --help + + +3. Compiling + +Run `make' for compilation. + + % make + + +4. Installation + +Run `make install' to install binaries and manuals. Don't forget to +become a super-user before the installation. + + % su + # make install + + +5. Configuration and usage + +mDNkit needs a configuration file `mdn.conf' to work properly. Unless +you specified --with-preference option to the `configure' script, you +have to create the file. Please refer the manual for `mdn.conf' for +details. A sample configuration (`mdn.conf.sample') is also provided +for your convenience. + +Also online manuals for `mdnsproxy', `mdnconv' and `runmdn' commands +are available. Please refer them for the usage and configuration of +these commands. + + % man mdn.conf + % man mdnsproxy + % man mdnconv + % man runmdn + + +6. Check your configuration + +A simple shell script `mdnslookup' is available in the directory +`tools/mdnconv', with which you can make queries for multilingual +domain names. It may help you check your configuration. + +The usage of `mdnslookup' is: + + % tools/mdnconv/mdnslookup <domain-name> <dns-server> + +Suppose that <domain-name> is an internationalized domain name written +in the local codeset (see ``LOCAL CODESET'' in the `mdn.conf' man page +for details), and <dns-server> is a hostname or IP address of DNS +server. + +`mdnslookup' inquires <mdn-domain-name> from <dns-server>, using +`mdnconv' and `nslookup' commands. If something is wrong, you will +see an error message output by `mdnconv', `nslookup' or `mdnslookup' +itself. + + +; $Id: INSTALL,v 1.1.2.1 2002/02/08 12:12:17 marka Exp $ diff --git a/contrib/idn/mdnkit/INSTALL.ja b/contrib/idn/mdnkit/INSTALL.ja new file mode 100644 index 00000000..f320cfe4 --- /dev/null +++ b/contrib/idn/mdnkit/INSTALL.ja @@ -0,0 +1,253 @@ + + mDNkit + $B%3%s%Q%$%k$H%$%s%9%H!<%k$NJ}K!(B + ($B<R(B) $BF|K\%M%C%H%o!<%/%$%s%U%)%a!<%7%g%s%;%s%?!<(B (JPNIC) + + +$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(B +$B$$$^$9!#(B + + + $BA0=`Hw(B: iconv() $B$,MxMQ$G$-$k$h$&$K$9$k(B + + $B%7%9%F%`@_Dj(B: `configure' $B%9%/%j%W%H$N<B9T(B + + $B%3%s%Q%$%k(B: `make' $B$N<B9T(B + + $B%$%s%9%H!<%k(B: `make install' $B$N<B9T(B + + $B%5%$%HKh$N@_Dj(B: `mdn.conf' $B$K$h$k@_Dj(B + + $B@_Dj$N3NG'(B ($B>JN,2D(B) + + +0. $BA0=`Hw(B + +$B$b$7$"$J$?$N;HMQ$7$F$$$k%7%9%F%`$N%i%$%V%i%j$K(B iconv() $B$,$J$$>l9g!"$"(B +$B$k$$$O$"$C$F$b(B UTF-8 $B$r07$&$3$H$,$G$-$J$$>l9g$K$O$"$i$+$8$a(B iconv() $B$r(B +$B%$%s%9%H!<%k$7$F$*$$$F$/$@$5$$!#(Biconv() $B$O!"Nc$($P(B GNU libiconv $B$H8F$P(B +$B$l$k%U%j!<(B (LGPL) $B$N<BAu$,(B + + http://clisp.cons.org/~haible/packages-libiconv.html + +$B$+$iF~<j2DG=$G$9!#(B + +*$BCm0U(B* + GNU libiconv-1.6.1 $B$O(B NetBSD 1.5 $B$H$NAH9g$o$;$GLdBj$,$"$j!"%3%s%Q%$(B + $B%k;~$K%(%i!<$,H/@8$7$^$9!#$3$N%P%0$r=$@5$9$k$?$a$N%Q%C%A$,(B + patch/libiconv $B%G%#%l%/%H%j$N2<$KMQ0U$5$l$F$$$^$9$N$G!"$3$NLdBj$KAx(B + $B6x$7$?>l9g$K$O(B libiconv $B$K%Q%C%A$rEv$F$F:F%$%s%9%H!<%k$7$F$/$@$5$$!#(B + $B$J$*!"%Q%C%A$NEv$FJ}$O%Q%C%A%U%!%$%k$N@hF,$K=q$+$l$F$$$^$9!#(B + + +1. configure $B%9%/%j%W%H$N<B9T(B + +$B%H%C%W%G%#%l%/%H%j$K$"$k(B configure $B%9%/%j%W%H$r<B9T$7$F$/$@$5$$!#(B + + % ./configure + +configure $B%9%/%j%W%H$K$O!"?tB?$/$N%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#$=$N$&(B +$B$A=EMW$H;W$o$l$k$b$N$O<!$NDL$j$G$9!#(B + + --prefix=PREFIX + mDNkit $B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$N%Q%9$r;XDj$7$^$9!#%G%U%)(B + $B%k%H$O(B /usr/local $B$G$9!#(B + + --with-libiconv=LIBICONV_PREFIX + $B$"$i$+$8$a%$%s%9%H!<%k$7$F$"$k(B GNU libiconv $B$r(B mDNkit $B$K%j%s%/(B + $B$5$;$k>l9g$O!"$3$N%*%W%7%g%s$r;XDj$7$F2<$5$$!#0z?t(B LIBICONV_PREFIX + $B$K$O!"(BGNU libiconv $B$,%$%s%9%H!<%k$5$l$F$$$k0LCV$r;XDj$7$^$9!#(B + $B0z?t$r>JN,$9$k$H!"(BPREFIX (PREFIX $B$NCM$O(B --prefix=PREFIX $B$+$i(B + $BF3=P$5$l$^$9(B) $B$r;XDj$7$?$b$N$H8+$J$5$l$^$9!#(B + + --with-libiconv $B$O(B GNU libiconv $BMQ$NC;=L7A$N%*%W%7%g%s$G(B + + --with-libiconv=/usr/local + + $B$3$l$O<!$HEy2A$K$J$j$^$9!#(B + + --with-iconv-include='-I/usr/local/include' + --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' + + $BC;=L7A$N%*%W%7%g%s(B (--with-libiconv) $B$HDL>oMQ$N%*%W%7%g%s(B + (--with-iconv-include, --with-iconv) $B$rN>J}$H$b;XDj$7$?>l9g$O!"(B + $BDL>oMQ$N%*%W%7%g%s$[$&$,M%@h$5$l$^$9!#(B + + --with-iconv-include=ICONV_INCDIR + C $B%3%s%Q%$%i$,DL>o$G$O8!:w$7$J$$%G%#%l%/%H%j$K(B "iconv.h" $B$,CV(B + $B$+$l$F$$$k>l9g!"<!$N$h$&$K$7$F$=$N%G%#%l%/%H%j$r;XDj$7$^$9!#(B + + --with-iconv-include=/usr/local/include + + --with-iconv=ICONV_LIB + libc $B$K(B iconv $B$,F~$C$F$$$J$$>l9g(B ($B>e5-$N%Q%C%1!<%8$rF~$l$?(B + $B>l9g$J$I(B) $B$K!"(Biconv $B$N%i%$%V%i%j$r;XDj$7$^$9!#Nc$($P(B + + --with-iconv="-L/usr/local/lib -liconv" + + $B$N$h$&$K;XDj$7$^$9!#$b$7(B iconv $B$,6&M-%i%$%V%i%j$K$J$C$F$$$k(B + $B>l9g$K$O!"(B-R $B%*%W%7%g%s$b;XDj$7$F(B + + --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" + + $B$H$9$kI,MW$,$"$k$+$b$7$l$^$;$s!#(B + + --with-iconv-sofile=SOFILE_PATH + mDNkit $B$K4^$^$l$F$$$k(B runmdn $B%3%^%s%I$O!"(Biconv() $B$,(B libc $B$N0l(B + $BIt$H$7$FDs6!$5$l$J$$$H$-$K!"(Biconv() $B$r4^$`6&M-%i%$%V%i%j$X$N%Q(B + $B%9L>$rCN$kI,MW$,$"$j$^$9!#(BmDNkit $B$O!"(B--with-iconv $B%*%W%7%g%s$N(B + $B5-=R$r4p$K%Q%9L>$r8!:w$7$^$9$,!"$3$l$K<:GT$7$?$H$-$K!"0J2<$N$h(B + $B$&$K6&M-%i%$%V%i%j$r;XDj$9$k$3$H$,$G$-$^$9!#(B + + --with-iconv-sofile=/usr/local/lib/libiconvv.so.2.0 + + --with-utf8=UTF8_NAME + iconv $B$K(B utf-8 $B%(%s%3!<%G%#%s%0$r;XDj$9$k>l9g!"K\%i%$%V%i%j$O(B + $B%G%U%)%k%H$G$O(B "UTF-8" $B$H$$$&L>A0$r;XDj$7$^$9!#$b$7$"$J$?$N(B + $B%7%9%F%`$N(B iconv $B$,(B "UTF-8" $B$H$$$&L>A0$r<u$1IU$1$J$$>l9g$K$O!"(B + $BBe$j$NL>A0$r;XDj$7$^$9!#Nc$($P(B "UTF-8" $B$G$O$J$/(B "utf8" $B$N(B + $B>l9g$K$O<!$N$h$&$K;XDj$7$^$9!#(B + + --with-utf8=utf8 + + +2. $B$=$NB>$N(B configure $B$N%*%W%7%g%s(B + +$B$=$l$[$I$h$/;H$&$o$1$G$O$"$j$^$;$s$,!"(Bconfigure $B$K$OA09`$N$b$N0J30$K(B +$B$bMM!9$J%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#(B + + --with-preference=PREFERENCE + mDNkit $B$N%5%s%W%k%3%s%U%#%.%e%l!<%7%g%s%U%!%$%k(B (mdn.conf.sample) + $B$N@_Dj$r(B PREFERENCE $B8~$1$N$b$N$K$7$^$9!#$^$?$3$N%*%W%7%g%s$r;XDj(B + $B$9$k$H%G%U%)%k%H$N%3%s%U%#%.%e%l!<%7%g%s%U%!%$%k(B (mdn.conf) $B$,(B + $B%$%s%9%H!<%k$5$l$^$9!#$?$@$7%U%!%$%k$,$9$G$KB8:_$7$F$$$k>l9g$K$O(B + $B%$%s%9%H!<%k$7$^$;$s!#(B + $B8=:_$N$H$3$m!";XDj$G$-$k(B PREFERENCE $B$O(B "jp" $B$N$_$G$9!#(B + + --with-amc-ace-z-prefix=AMCZ_PREFIX + AMC-ACE-Z $B$O(B DNS $B%W%m%H%3%k>e$G;HMQ$5$l$kB?8@8l%I%a%$%sL>$K4X$7(B + $B$FDs0F$5$l$F$$$k%(%s%3!<%G%#%s%0J}<0$G$9!#$3$N%(%s%3!<%G%#%s%0(B + $B$G%3%s%3!<%I$5$l$?%I%a%$%sL>$H=>Mh$N(B ASCII $B%I%a%$%sL>$H6hJL$9(B + $B$k$?$a$K$O!"8GDj$N@\F,<-$rMQ0U$9$kI,MW$,$"$j$^$9!#$7$+$7$J$,$i!"(B + $B8=:_$N(B AMCE-ACE-Z $B$N%$%s%?!<%M%C%H%I%i%U%H$G$O@\F,<-$rDj5A$7$F(B + $B$$$^$;$s!#$3$N%*%W%7%g%s$rMQ$$$k$3$H$G!"@\F,<-$r;XDj$9$k$3$H$,(B + $B$G$-$^$9!#;XDj$7$J$1$l$P!"(B"zq--" $B$,@\F,<-$H$7$FDj5A$5$l$^$9!#(B + + --with-race-prefix=RACE_PREFIX + --with-dude-prefix=DUDE_PREFIX + RACE $B$b(B DUDE $B$b(B DNS $B%W%m%H%3%k>e$G;HMQ$5$l$kB?8@8l%I%a%$%sL>$K(B + $B4X$7$FDs0F$5$l$F$$$k%(%s%3!<%G%#%s%0J}<0$G$9$,!"$9$G$KGQ$l$?$b(B + $B$N$H$J$C$F$$$^$9!#%(%s%3!<%G%#%s%0J}<0$K$D$$$F5-=R$7$?%$%s%?!<(B + $B%M%C%H%I%i%U%H$K$O@\F,<-$,Dj5A$5$l$F$$$^$9$,!"$3$l$i$N%*%W%7%g(B + $B%s$rMQ$$$F@\F,<-$rJQ99$9$k$3$H$b2DG=$G$9!#(B + + --exec-prefix=EXEC_PREFIX + $B%^%7%s8GM-$N%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$N%Q%9$r;XDj(B + $B$7$^$9!#%G%U%)%k%H$O(B PREFIX (``--prefix=PREFIX'' $B$K$h$C$F;XDj(B + $B2DG=!"(BPREFIX $B$N%G%U%)%k%H$O(B /usr/local) $B$K$J$j$^$9!#(B + + --sbindir=SBINDIR + mdnsproxy $B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#%G%U%)%k(B + $B%H$G$O(B EXEC_PREFIX/sbin $B$G$9!#(B + + --bindir=BINDIR + mdnconv $B$H(B runmdn $B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#(B + $B%G%U%)%k%H$G$O(B EXEC_PREFIX/bin $B$G$9!#(B + + --libdir=LIBDIR + MDN $B%i%$%V%i%j(B (libmdn) $B$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7(B + $B$^$9!#%G%U%)%k%H$G$O(B EXEC_PREFIX/lib $B$G$9!#(B + + --includedir=INCDIR + MDN $B%i%$%V%i%j$N%X%C%@%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j$r(B + $B;XDj$7$^$9!#%G%U%)%k%H$G$O(B PREFIX/include $B$G$9!#(B + + --sysconfdir=SYSCONFDIR + MDN $B%i%$%V%i%j$*$h$S(B mdnsproxy $B$N@_Dj%U%!%$%k$N%5%s%W%k$r%$%s(B + $B%9%H!<%k$9$k%G%#%l%/%H%j$r;XDj$7$^$9!#%G%U%)%k%H$G$O(B PREFIX/etc + $B$G$9!#(B + + --mandir=MANDIR + $B%*%s%i%$%s%^%K%e%"%k$N%$%s%9%H!<%k%G%#%l%/%H%j$r;XDj$7$^$9!#(B + $B%G%U%)%k%H$G$O(B PREFIX/man $B$G$9!#(B + + --datadir=DATADIR + $B0[$J$k%^%7%s$G6&M-2DG=$J%U%!%$%k$r%$%s%9%H!<%k$9$k%G%#%l%/%H%j(B + $B$r;XDj$7$^$9!#%G%U%)%k%H$O(B PREFIX/share $B$G$9!#(BDATADIR/mdnkit + $B$N2<$K!"(BmDNkit $B$G;HMQ$9$k4v$D$+$N%G!<%?%U%!%$%k$,%$%s%9%H!<%k(B + $B$5$l$^$9!#(B + + --localstatedir=LOCALSTATEDIR + --with-logdir=LOGDIR + LOGDIR $B$O(B mdnsproxy $B$N%m%0%U%!%$%k$r=PNO$9$kI8=`$N%G%#%l%/%H%j(B + $B$r;XDj$7$^$9!#(BLOGDIR $B$N%G%U%)%k%H$O(B LOLOCALSTATEDIR/mdnsproxy + $B$G!"(BLOLOCALSTATEDIR $B$N%G%U%)%k%H$O(B PREFIX/var $B$G$9!#(B + + --enable-debug + $B%G%P%C%0MQ$N%3!<%I$rM-8z$K$7$^$9!#%G%U%)%k%H$O(B "no" ($BL58z(B) $B$G$9!#(B + + --enable-shared + $B6&M-%i%$%V%i%j$r:n@.$7$^$9!#%G%U%)%k%H$O(B "yes" ($B:n@.$9$k(B) $B$G$9!#(B + + --enable-static + $B@EE*%i%$%V%i%j$r:n@.$7$^$9!#%G%U%)%k%H$O(B "yes" ($B:n@.$9$k(B) $B$G$9!#(B + +configure $B$K$OB>$K$bB?$/$N%*%W%7%g%s$,$"$j$^$9$,!";D$j$O0lHLE*$J%*%W%7%g(B +$B%s$J$N$G@bL@$O>J$-$^$9!#(B + + % ./configure --help + +$B$r<B9T$9$k$H%*%W%7%g%s$N0lMw$,I=<($5$l$^$9!#(B + + +3. $B%3%s%Q%$%k(B + +configure $B$r<B9T$9$k$H(B Makefile $B$J$I$,@8@.$5$l$^$9$N$G!"B3$1$F(B make$B$r(B +$B<B9T$7$F%3%s%Q%$%k$7$^$9!#(B + + % make + + +4. $B%$%s%9%H!<%k(B + +$B%9!<%Q%f!<%6$K$J$C$F%$%s%9%H!<%k$7$^$9!#(B + + % su + # make install + + +5. $B@_Dj$H;HMQJ}K!(B + +mDNkit $B$r@5$7$/F0:n$5$;$k$K$O!"@_Dj%U%!%$%k(B `mdn.conf' $B$,I,MW$G$9!#(B +configure $B%9%/%j%W%H$K(B --with-preference $B%*%W%7%g%s$r;XDj$7$J$+$C$?>l(B +$B9g$K$O$3$N%U%!%$%k$r:n@.$9$kI,MW$,$"$j$^$9!#$3$N@_Dj%U%!%$%k$N>\:Y$K$D(B +$B$$$F$O(Bmdn.conf $B$N%*%s%i%$%s%^%K%e%"%k$r$4Mw$/$@$5$$!#$^$?@_DjNc$,=q$+(B +$B$l$?%5%s%W%k%U%!%$%k(B (mdn.conf.sample) $B$b%$%s%9%H!<%k$5$l$^$9$N$G$4Mx(B +$BMQ$/$@$5$$!#(B + +$B$^$?!"(Bmdnsproxy$B!"(Bmdnconv$B!"(Brunmdn $B$H$$$C$?%D!<%k$N%*%s%i%$%s%^%K%e%"%k(B +$B$bDs6!$5$l$F$$$^$9!#$3$l$i$N%3%^%s%I$N;H$$J}!"@_DjJ}K!$K4X$7$F$O$=$A$i(B +$B$r;2>H$7$F$/$@$5$$!#(B + + % man mdn.conf + % man mdnsproxy + % man mdnconv + % man runmdn + + +6. $B@_Dj$N3NG'(B + +`mdnsproxy' $B$H$$$&4JC1$J%7%'%k%9%/%j%W%H$,(B tools/mdnconv $B%G%#%l%/%H%j(B +$B$KMQ0U$5$l$F$$$^$9!#$3$N%9%/%j%W%H$r;H$&$H(B DNS $B%5!<%P$KBP$7$FB?8@8l%I(B +$B%a%$%sL>$rLd$$9g$o$;$k$3$H$,$G$-$^$9!#@_Dj%U%!%$%k$N3NG'$KLrN)$D$+$bCN(B +$B$l$^$;$s!#(B + +`mdnslookup' $B$N;HMQJ}K!$O!"<!$NDL$j$G$9!#(B + + % tools/mdnconv/mdnslookup <domain-name> <dns-server> + +$B$3$3$G(B <domain-name> $B$O%m!<%+%k%3!<%I%;%C%H(B ($B>\$7$/$O(B mdn.conf $B$N%^%K%e(B +$B%"%k$N(B ``LOCAL CODESET'' $B$r;2>H$N$3$H(B) $B$G=q$+$l$?B?8@8l%I%a%$%sL>$G!"(B +<dns-server> $B$O(B DNS $B%5!<%P$N%[%9%HL>$b$7$/$O(B IP $B%"%I%l%9$G$9!#(B + +`mdnslookup' $B$O(B `mdnconv' $B$*$h$S(B `nslookup' $B%3%^%s%I$rMQ$$$F!"(B +<dns-server> $B$KBP$7$F(B <domain-name> $B$r0z$-$K9T$-$^$9!#@_Dj$K2?$+4V0c$$(B +$B$,$"$l$P!"(B`mdnconv', `nslookup', $B$"$k$$$O(B `mdnslookup' $B<+?H$K$h$k%(%i!<(B +$B%a%C%;!<%8$,=PNO$5$l$^$9!#(B + + +; $Id: INSTALL.ja,v 1.1.2.1 2002/02/08 12:12:18 marka Exp $ diff --git a/contrib/idn/mdnkit/LICENSE.txt b/contrib/idn/mdnkit/LICENSE.txt index 0e333813..e2e0b79f 100644 --- a/contrib/idn/mdnkit/LICENSE.txt +++ b/contrib/idn/mdnkit/LICENSE.txt @@ -1,4 +1,5 @@ -Copyright (c) 2000 Japan Network Information Center. All rights reserved. +Copyright (c) 2000, 2001 Japan Network Information Center. + All rights reserved. By using this file, you agree to the terms and conditions set forth bellow. @@ -6,8 +7,8 @@ By using this file, you agree to the terms and conditions set forth bellow. The following License Terms and Conditions apply, unless a different license is obtained from Japan Network Information Center ("JPNIC"), -a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -Tokyo, Japan. +a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +Chiyoda-ku, Tokyo 101-0047, Japan. 1. Use, Modification and Redistribution (including distribution of any modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/Makefile.in b/contrib/idn/mdnkit/Makefile.in index 602e22ca..f005bbef 100644 --- a/contrib/idn/mdnkit/Makefile.in +++ b/contrib/idn/mdnkit/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.44 2001/04/17 03:24:09 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:20 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -67,18 +67,20 @@ SHELL = @SHELL@ SUBDIRS = include lib mdnsproxy man tools map -all: +all: force for d in $(SUBDIRS); do (cd $$d; $(MAKE) all); done -install: +install: force for d in $(SUBDIRS); do (cd $$d; $(MAKE) install); done -clean: +clean: force for d in $(SUBDIRS); do (cd $$d; $(MAKE) clean); done -dist: +dist: force @v=`sed -ne '/^# *define *MDNKIT_VERSION/s/^.*"\([^"]*\)".*$$/\1/p' \ $(srcdir)/include/mdn/version.h`; \ echo generate mdnkit-$$v-src.tar.gz; \ cd $(srcdir); \ $(PERL) $(MKTARPKG) --gzip=9 mdnkit-$$v-src + +force: diff --git a/contrib/idn/mdnkit/NEWS b/contrib/idn/mdnkit/NEWS index 165fad44..ce287bb6 100644 --- a/contrib/idn/mdnkit/NEWS +++ b/contrib/idn/mdnkit/NEWS @@ -1,13 +1,70 @@ -; $Id: NEWS,v 1.22 2001/06/01 01:20:39 ishisone Exp $ +; $Id: NEWS,v 1.1 2002/01/02 02:46:20 marka Exp $ + +Major changes in version 2.2.3: + +* BIND-9 patch for BIND-9.2.0 is available. + +* NAMEPREP draft -06 is supported. + +* Problems on Tru64 are fixed. + +Major changes in version 2.2.2: + +* Now runmdn can work on NetBSD-1.5 or later. + +Major changes in version 2.2.1: + +* Fix a bug that the MDN library misses prohibited characters. + +Major changes in version 2.2: + +* Alternate encoding is no longer supported. + mDNkit now follows IDNA-03 which says in the section 2.1.2 that An + IDNA-aware application MUST NOT do any preparation or conversion to + ACE on any non-internationalized name part. `alternate-encoding' + entry in configuration file is simply ignored. + +* The MDN library (libmdn) performs NAMEPREP check at decoding an ACE + name. If the name is not NAMEPREPed, libmdn returns a name with ACE + encoding instead of local encoding. + +* Supported ACEs are now AMC-ACE-Z, RACE and DUDE only. + Since the IDN working group has chosen AMC-ACE-Z, most of other ACEs + are no longer supported by default. If you wanted to use those + ACEs, specify `--enable-extra-ace' option of configure. + +* mdnsproxy can output log messages to standard error. + +* mdnsproxy adds date and time string to a message logged to a regular + file. + +* `--with-iconv-include', `--with-libiconv' and `--enable-debug' + options are added to `configure'. + +* `--with-libiconv' option is also added to `configure' in BIND-9 patch. + +* A build problem on Linux with glibc-2.2 is fixed. + +* The base version of BIND-9 patch is now 9.1.3. + +* Supported NAMEPREP drafts are -03 and -05. + -02 and -04 are not supported. + +* `-e' option is added to runmdn to set local encoding. + +* `dig', `host' and `nslookup' of BIND-9 with MDN support patch + recognize the MDN_DISABLE environment variable. Those commands turn + off MDN support if the variable is defined. Major changes in version 2.1: * BIND-9 patch is back. The patch adds encoding conversion and NAMEPREP capability to `dig', `host' and `nslookup'. - Since version 2 adopts IDNA, in which all the MDN processing are - performed in the application layer before calling the resolver - layer, patch to the BIND-9's light-weight resolver found in version - 1.x are removed. + Since mDNkit version 2 adopts IDNA, in which all the MDN processing + are performed in the application layer before calling the resolver + layer, the patch no longer contains modification of the light-weight + resolver or `allow-utf8' extension of `named' configuration syntax + found in mDNkit version 1.x. * Runmdn is back. The strategy for making resolver MDN-aware has been changed from replacing low-level resolver functions to wrapping diff --git a/contrib/idn/mdnkit/README b/contrib/idn/mdnkit/README index 74f946a3..39800577 100644 --- a/contrib/idn/mdnkit/README +++ b/contrib/idn/mdnkit/README @@ -1,11 +1,23 @@ mDNkit -- multilingual domain name toolkit -- - version 2.1 + version 2.2.3 Japan Network Information Center (JPNIC) -* Overview +Table of contents of this file: + + 1. Overview + 2. Directory structure of this distribution + 3. Applying patches + 4. Supported systems + 5. Contact information + +See the file INSTALL for compilation and installation instructions. +See the file NEWS for a list of major changes in the current release. + + +1. Overview mDNkit is a toolkit for handling multilingualized/internationalized domain names. To handle such names, the following features are required: @@ -147,13 +159,16 @@ using above components. |application| +---------+---------+ +----------+ +-----------+ -* Directory structure of this distribution + +2. Directory structure of this distribution Below is a directory structure of this distribution with some important files and their brief description. +README this file +README.ja .. in Japanese + +INSTALL compilation and installation instructions. + +INSTALL.ja .. in Japanese +DISTFILES list of files in this distribution +NEWS what's new in this version +ChangeLog list of changes @@ -176,184 +191,72 @@ important files and their brief description. +wsock/ source directory for mDN wrapper -* Compilation and installation - -0. Prerequisite - -If your system's library does not have iconv() function, which is a -general codeset conversion utility, install it as an external library. -You also need external library if the system's implementation cannot -handle UTF-8 encoding, or it doesn't support some encodings which your -client applications uses. - -You can get a free version of iconv() implementation (under LGPL -license), from: - - http://clisp.cons.org/~haible/packages-libiconv.html - -*Note* - The current version of the above implementation (libiconv-1.6.1) is - known to have a compilation problem on NetBSD 1.5. There is a patch - file for the bug under patch/libiconv directory. If you are a - NetBSD 1.5 user and found a problem in compiling libiconv, apply the - patch and try again. The patch file contains brief instructions on - how to apply it at the beginning. - -1. Running configure script - -Run `configure' script in the top directory. This checks various -characteristics of your system and it will create Makefiles and -config.h appropriate for your system. - - % ./configure - -`configure' accepts many options. Here is a list of some important -options. - - --with-iconv=LIB - If your libc doesn't contain iconv(), specify the library - that contains iconv(). For example, if iconv() is libiconv - in /usr/local/lib, you should specify: - - --with-iconv="-L/usr/local/lib -liconv" - - Note that if the library is a shared one, you might also want to - specify -R option, like: - - --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" - - If the header file "iconv.h" has installed in a non-standard - directory like /usr/local/include, you should specify CFLAGS - environment variable. See below. - - --with-iconv-sofile=PATH - ``runmdn'' command in this kit needs to know the pathname of - shared library file that contains iconv(), if iconv() is not - part of libc. mDNkit tries to find out the pathname from the - informaiton provided by ``--with-iconv'' option described - above. But when it fails, you have to specify it with this - option, like: - - --with-iconv-sofile=/usr/local/lib/libiconv.so.2.0 - - --with-utf8=NAME - If your iconv() (precisely, iconv_open()) does not accept - "UTF-8" as the name of UTF-8 encoding, specify the name for - it. For example if your iconv() uses "utf8" instead, you - should specify: - - --with-utf8=utf8 - - --with-preference=PREFERENCE - This option sets the preference for the sample mDNkit - configuration file (mdn.conf.sample). Also this option - enables to install default configuration file (mdn.conf) - if the file didn't exist. - The only preference supported by this version is "jp". - - --with-race-prefix=PREFIX - --with-brace-suffix=SUFFIX - --with-lace-prefix=PREFIX - --with-dude-prefix=PREFIX - RACE (Row-based ASCII-Compatible Encoding), BRACE (Bi-mode - Row-based ASCII-Compatible Encoding), LACE (Length-based ASCII - Compatible Encoding) and DUDE (Differential Unicode Domain - Encoding) are proposed encodings for multilingual domain name - in DNS protocol data. They uses a fixed prefix (or suffix) - string to distinguish names encoded by them from normal ASCII - domain names. These prefix/suffix are defined by the current - Internet Drafts and mDNkit uses them by default, but later - version of the drafts may change them. In that case you can - specify the prefix/suffix with these options. - - --with-altdude-prefix=PREFIX - --with-altdude-suffix=SUFFIX - --with-amc-ace-m-prefix=PREFIX - --with-amc-ace-m-suffix=SUFFIX - --with-amc-ace-o-prefix=PREFIX - --with-amc-ace-o-suffix=SUFFIX - --with-amc-ace-r-prefix=PREFIX - AltDUDE, AMC-ACE-M, AMC-ACE-O and AMC-ACE-R are also proposed - encodings for multilingual domain names. Unlike encodings - mentioned above, the Internet Drafts for these do not define - specific prefixes nor suffixes. mDNkit provides default for - them, but you can override them with these options. - You can specify either prefix or suffix for AltDUDE, AMC-ACE-M - and AMC-ACE-O. In case both are specified, prefix is - preferred. - - --sbindir=DIR - Specifies the install directory for mdnsproxy. Default is - /usr/local/sbin. +3. Applying patches - --bindir=DIR - Specifies the install directory for mdnconv and runmdn. - Default is /usr/local/bin. +This distribution also contains patches for BIND 9.1.3, BIND 8.2.3 and +Squid 2.4.STABLE1. The top of these patch files describe how to apply +the patch and (re)install. - --sysconfdir=DIR - Specifies the install directory for sample files of mdnsproxy - configuration and mDNkit's resolver configuration. Default is - /usr/local/etc. +Note that on Solaris, "patch" command that comes with the system +sometimes doesn't work correctly. You may want to install the GNU +version of the command (http://www.gnu.org/software/patch/) and use +it. - --mandir=DIR - Specifies the base install directory for online manuals. - Default is /usr/local/man. -`configure' has many more options. To see the list of available -options, you should run it with --help option. +4. Supported systems - % ./configure --help +We've had successful builds on the following systems: -If you want to specify extra compiler options, like adding non-standard -directory to include file search path, use environment variable CFLAGS. + ------------------------------------------------------------------- + OS iconv library configure options + =================================================================== + FreeBSD 4.4-RELEASE GNU libiconv --with-libiconv + for Intel 1.6.1 + ------------------------------------------------------------------- + FreeBSD 3.5.1-RELEASE GNU libiconv --with-libiconv + for Intel 1.7 + ------------------------------------------------------------------- + NetBSD 1.5.2 GNU libiconv --with-libiconv + for Intel 1.7 + ------------------------------------------------------------------- + Red Hat Linux 7.1 standard library none + for Intel (glibc) + ------------------------------------------------------------------- + Red Hat Linux 7.0 standard library none + for Intel (glibc) + ------------------------------------------------------------------- + Debian/GNU Linux 2.2r3 standard library none + for Intel (glibc) + ------------------------------------------------------------------- + Solaris 2.6 standard library none + for Sparc (libc) + ------------------------------------------------------------------- + Windows2000 GNU libiconv --with-libiconv + (cygwin-1.3.2) *1 1.7 + ------------------------------------------------------------------- - % CFLAGS="-I/usr/local/include -O2" ./configure ... (for sh) - % setenv CFLAGS "-I/usr/local/include -g"; ./configure ... (for csh) + *1: Only mdnconv can work on that system. -2. Compiling +The latest information about supported/unsupported systems will be +found at the mDNkit FAQ page linked from: -Run `make' for compilation. + http://www.nic.ad.jp/jp/research/idn/ - % make -3. Installation - -Run `make install' to install binaries and manuals. Don't forget to -become a super-user before the installation. - - % su - # make install - -4. Configuration and usage - -Please consult online manuals for configuration and usage of `mdnsproxy' -`mdnconv', and `runmdn'. Also for `mdnconv' and `runmdn', please refer -the manual of mDNkit's resolver configuration file `mdn.conf'. - - % man mdnsproxy - % man mdnconv - % man mdn.conf +5. Contact information +Please see -* Applying patches - -This distribution also contains patches for BIND 9.1.1, BIND 8.2.3 and -Squid 2.4.STABLE1. The top of these patch files describe how to apply -the patch and (re)install. - -Note that on Solaris, "patch" command that comes with the system -sometimes doesn't work correctly. You may want to install the GNU -version of the command (http://www.gnu.org/software/patch/) and use -it. + http://www.nic.ad.jp/jp/research/idn/ +for the latest news about this kit. +Bug reports and comments on this kit should be sent to -* Contact information - -Please see http://www.nic.ad.jp/jp/research/idn/ for the latest news -about this kit. + mdnkit-bugs@nic.ad.jp +and + idn-cmt@nic.ad.jp -Bug reports and comments on this kit should be sent to -mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively. +respectively. -; $Id: README,v 1.29 2001/06/01 01:13:46 ishisone Exp $ +; $Id: README,v 1.1 2002/01/02 02:46:21 marka Exp $ diff --git a/contrib/idn/mdnkit/README.ja b/contrib/idn/mdnkit/README.ja index 456e9f82..0effa902 100644 --- a/contrib/idn/mdnkit/README.ja +++ b/contrib/idn/mdnkit/README.ja @@ -1,11 +1,24 @@ mDNkit -- ¿¸À¸ì¥É¥á¥¤¥ó̾¥Ä¡¼¥ë¥¥Ã¥È -- - ¥Ð¡¼¥¸¥ç¥ó 2.1 + ¥Ð¡¼¥¸¥ç¥ó 2.2.3 (¼Ò) ÆüËܥͥåȥ¥¯¥¤¥ó¥Õ¥©¥á¡¼¥·¥ç¥ó¥»¥ó¥¿¡¼ (JPNIC) -* ³µÍ× +¤³¤Î¥Õ¥¡¥¤¥ë¤ÎÌܼ¡: + + 1. ³µÍ× + 2. ¥Ç¥£¥ì¥¯¥È¥ê¹½À® + 3. ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý + 4. ËÜ¥¥Ã¥È¤¬Âбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à + 5. ËÜ¥¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¡¢Ì䤤¹ç¤ï¤»¤Ë¤Ä¤¤¤Æ + +¥³¥ó¥Ñ¥¤¥ë¤ª¤è¤Ó¥¤¥ó¥¹¥È¡¼¥ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢INSTALL.ja ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò +¤´Í÷²¼¤µ¤¤¡£¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Î¼ç¤ÊÊѹ¹ÅÀ¤ËÉÕ¤¤¤Æ¤Ï¡¢(±Ñʸ¤Ç¤¹¤¬) NEWS +¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò¤´Í÷²¼¤µ¤¤¡£ + + +1. ³µÍ× mDNkit ¤È¤Ï¿¸À¸ì¥É¥á¥¤¥ó̾¤ò°·¤¦¤¿¤á¤Î¥Ä¡¼¥ë¥¥Ã¥È¤Ç¤¹¡£Â¿¸À¸ì¥É¥á¥¤ ¥ó̾¤ò°·¤¦¤¿¤á¤Ë¤Ï¡¢¼¡¤Î¤è¤¦¤Êµ¡Ç½¤¬Í׵ᤵ¤ì¤Þ¤¹¡£ @@ -140,12 +153,14 @@ mDNkit ¤È¤Ï¿¸À¸ì¥É¥á¥¤¥ó̾¤ò°·¤¦¤¿¤á¤Î¥Ä¡¼¥ë¥¥Ã¥È¤Ç¤¹¡£Â¿¸À¸ì¥É¥á¥¤ +----------------+ +---------+------------+ +------+ -* ¥Ç¥£¥ì¥¯¥È¥ê¹½À® +2. ¥Ç¥£¥ì¥¯¥È¥ê¹½À® ÇÛÉÛ¥¥Ã¥È¤Î¥Ç¥£¥ì¥¯¥È¥ê¹½À®¤È¡¢¼çÍפʥե¡¥¤¥ë¤ò¼¨¤·¤Þ¤¹¡£ README ±Ñ¸ìÈǤΠREADME README.ja ¤³¤Î¥Õ¥¡¥¤¥ë + INSTALL ±Ñ¸ìÈǤΠINSTALL + INSTALL.ja ¥³¥ó¥Ñ¥¤¥ë¤È¥¤¥ó¥¹¥È¡¼¥ëÊýË¡ DISTFILES ÇÛÉÛ¤µ¤ì¤ë¥Õ¥¡¥¤¥ë°ìÍ÷ NEWS ¼ç¤ÊÊѹ¹ ChangeLog Êѹ¹¾ÜºÙ @@ -168,173 +183,9 @@ mDNkit ¤È¤Ï¿¸À¸ì¥É¥á¥¤¥ó̾¤ò°·¤¦¤¿¤á¤Î¥Ä¡¼¥ë¥¥Ã¥È¤Ç¤¹¡£Â¿¸À¸ì¥É¥á¥¤ wsock/ mDN ¥é¥Ã¥Ñ¡¼¥½¡¼¥¹ -* ¥³¥ó¥Ñ¥¤¥ë¤ª¤è¤Ó¥¤¥ó¥¹¥È¡¼¥ë - -0. Á°½àÈ÷ - -¤â¤·¤¢¤Ê¤¿¤Î»ÈÍѤ·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Î¥é¥¤¥Ö¥é¥ê¤Ë iconv() ¤¬¤Ê¤¤¾ì¹ç¡¢¤¢ -¤ë¤¤¤Ï¤¢¤Ã¤Æ¤â UTF-8 ¤ò°·¤¦¤³¤È¤¬¤Ç¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¤¢¤é¤«¤¸¤á iconv() ¤ò -¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£iconv() ¤Î¼ÂÁõ¤Ï¡¢Î㤨¤Ð LGPL ¤Î¤â¤Î¤¬ - - http://clisp.cons.org/~haible/packages-libiconv.html - -¤«¤éÆþ¼ê²Äǽ¤Ç¤¹¡£ - -*Ãí°Õ* - ¾åµ¼ÂÁõ¤ÎºÇ¿·ÈÇ (libiconv-1.6.1) ¤Ï NetBSD 1.5 ¤È¤ÎÁȹç¤ï¤»¤ÇÌäÂ꤬ - ¤¢¤ê¡¢¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤¹¡£¤³¤Î¥Ð¥°¤ò½¤Àµ¤¹¤ë¤¿¤á¤Î¥Ñ¥Ã - ¥Á¤¬ patch/libiconv ¥Ç¥£¥ì¥¯¥È¥ê¤Î²¼¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¤³¤ÎÌäÂê - ¤ËÁø¶ø¤·¤¿¾ì¹ç¤Ë¤Ï¥Ñ¥Ã¥Á¤òÅö¤Æ¤Æ¤«¤éºÆ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Æ¤¯¤À¤µ¤¤¡£¤Ê¤ª¡¢ - ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý¤Ï¥Ñ¥Ã¥Á¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤Ë½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£ - -1. configure ¥¹¥¯¥ê¥×¥È¤Î¼Â¹Ô - -¥È¥Ã¥×¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë configure ¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£ - - % ./configure - -configure ¥¹¥¯¥ê¥×¥È¤Ë¤Ï¤¤¤¯¤Ä¤«¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ -mdn ¤ËľÀÜ´Ø·¸¤¹¤ë¤â¤Î¤Ï¼¡¤ÎÄ̤ê¤Ç¤¹¡£ - - --with-iconv=LIB - libc ¤Ë iconv ¤¬Æþ¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç (¾åµ¤Î¥Ñ¥Ã¥±¡¼¥¸¤òÆþ¤ì¤¿ - ¾ì¹ç¤Ê¤É) ¤Ë¡¢iconv ¤Î¥é¥¤¥Ö¥é¥ê¤ò»ØÄꤷ¤Þ¤¹¡£Î㤨¤Ð - - --with-iconv="-L/usr/local/lib -liconv" - - ¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£¤â¤· iconv ¤¬¶¦Í¥é¥¤¥Ö¥é¥ê¤Ë¤Ê¤Ã¤Æ¤¤¤ë - ¾ì¹ç¤Ë¤Ï¡¢-R ¥ª¥×¥·¥ç¥ó¤â»ØÄꤷ¤Æ - - --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv" - - ¤È¤¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£ - - --with-iconv-sofile=PATH - mDNkit ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë runmdn ¥³¥Þ¥ó¥É¤Ï¡¢iconv() ¤¬ libc ¤Î°ì - Éô¤È¤·¤ÆÄ󶡤µ¤ì¤Ê¤¤¤È¤¤Ë¡¢iconv() ¤ò´Þ¤à¶¦Í¥é¥¤¥Ö¥é¥ê¤Ø¤Î¥Ñ - ¥¹Ì¾¤òÃΤëɬÍפ¬¤¢¤ê¤Þ¤¹¡£mDNkit ¤Ï¡¢--with-iconv ¥ª¥×¥·¥ç¥ó¤Î - µ½Ò¤ò´ð¤Ë¥Ñ¥¹Ì¾¤ò¸¡º÷¤·¤Þ¤¹¤¬¡¢¤³¤ì¤Ë¼ºÇÔ¤·¤¿¤È¤¤Ë¡¢°Ê²¼¤Î¤è - ¤¦¤Ë¶¦Í¥é¥¤¥Ö¥é¥ê¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ - - --with-iconv-sofile=/usr/local/lib/libiconvv.so.2.0 - - --with-utf8=NAME - iconv ¤Ë utf-8 ¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤹ¤ë¾ì¹ç¡¢Ëܥ饤¥Ö¥é¥ê¤Ï - ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï "UTF-8" ¤È¤¤¤¦Ì¾Á°¤ò»ØÄꤷ¤Þ¤¹¡£¤â¤·¤¢¤Ê¤¿¤Î - ¥·¥¹¥Æ¥à¤Î iconv ¤¬ "UTF-8" ¤È¤¤¤¦Ì¾Á°¤ò¼õ¤±ÉÕ¤±¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ - Âå¤ê¤Î̾Á°¤ò»ØÄꤷ¤Þ¤¹¡£Î㤨¤Ð "UTF-8" ¤Ç¤Ï¤Ê¤¯ "utf8" ¤Î - ¾ì¹ç¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë»ØÄꤷ¤Þ¤¹¡£ - - --with-utf8=utf8 - - --with-preference=PREFERENCE - mDNkit ¤Î¥µ¥ó¥×¥ë¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë (mdn.conf.sample) - ¤ÎÀßÄê¤ò PREFERENCE ¸þ¤±¤Î¤â¤Î¤Ë¤·¤Þ¤¹¡£¤Þ¤¿¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄê - ¤¹¤ë¤È¥Ç¥Õ¥©¥ë¥È¤Î¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë (mdn.conf) ¤¬ - ¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤Þ¤¹¡£¤¿¤À¤·¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï - ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤»¤ó¡£ - ¸½ºß¤Î¤È¤³¤í¡¢»ØÄê¤Ç¤¤ë PREFERENCE ¤Ï "jp" ¤Î¤ß¤Ç¤¹¡£ - - --with-race-prefix=PREFIX - --with-brace-suffix=SUFFIX - --with-lace-prefix=PREFIX - --with-dude-prefix=PREFIX - RACE (Row-based ASCII-Compatible Encoding)¡¢BRACE (Bi-mode - Row-based ASCII-Compatible Encoding)¡¢ LACE (Length-based - ASCII Compatible Encoding) ¤ª¤è¤Ó DUDE (Differential Unicode - Domain Encoding) ¤Ï¤¤¤º¤ì¤â DNS ¥×¥í¥È¥³¥ë¾å¤Ç»ÈÍѤµ¤ì¤ë¿¸À¸ì - ¥É¥á¥¤¥ó̾¤Ë´Ø¤·¤ÆÄó°Æ¤µ¤ì¤Æ¤¤¤ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°Êý¼°¤Ç¤¹¡£Ä̾ï - ¤Î ASCII ¥É¥á¥¤¥ó̾¤È¤³¤ì¤é¤Ë¤è¤Ã¤Æ¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿¥É¥á¥¤¥ó̾ - ¤ò¶èÊ̤¹¤ë¤¿¤á¤Ë¡¢¸ÇÄê¤ÎÀÜƬ¼ (BRACE ¤Î¾ì¹ç¤Ë¤ÏÀÜÈø¼) ¤¬ÍѤ¤ - ¤é¤ì¤Þ¤¹¡£ - mDNkit ¤Ç¤Ï¸½ºß¤Î¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥é¥Õ¥È¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëÀÜƬ¼ - ¤¢¤ë¤¤¤ÏÀÜÈø¼¤ò»ÈÍѤ¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢º£¸å¤Î¥É¥é¥Õ¥È¤Ç - ÊѤï¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£¤½¤³¤Ç¡¢¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤Æ»ØÄê¤Ç - ¤¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ - - --with-altdude-prefix=PREFIX - --with-altdude-suffix=SUFFIX - --with-amc-ace-m-prefix=PREFIX - --with-amc-ace-m-suffix=SUFFIX - --with-amc-ace-o-prefix=PREFIX - --with-amc-ace-o-suffix=SUFFIX - --with-amc-ace-r-prefix=PREFIX - AltDUDE¡¢AMC-ACE-M¡¢AMC-ACE-O ¤ª¤è¤Ó AMC-ACE-R ¤â RACE ¤Ê¤É¤È - ƱÍͤË¿¸À¸ì¥É¥á¥¤¥ó¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤È¤·¤ÆÄó°Æ¤µ¤ì¤Æ¤¤¤ë¤â¤Î - ¤Ç¤¹¡£¤¿¤À¤·¤³¤ì¤é¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ï RACE ¤Ê¤É¾å¤Ë¤¢¤²¤¿¤â¤Î - ¤È°Û¤Ê¤ê¡¢¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥é¥Õ¥È¤Ç¤ÏÆÃÄê¤ÎÀÜƬ¼¡¢ÀÜÈø¼¤¬ÄêµÁ - ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£mDNkit ¤Ç¤Ï¥Ç¥Õ¥©¥ë¥È¤ÎÀÜƬ¼/ÀÜÈø¼¤òÀßÄꤷ¤Æ - ¤¢¤ê¤Þ¤¹¤¬¡¢¤³¤³¤Ë¤¢¤²¤¿¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ì¤ÐÊ̤Τâ¤Î¤ËÊѹ¹¤¹ - ¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ - AltDUDE¡¢AMC-ACE-M ¤ª¤è¤Ó AMC-ACE-O ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ÀÜƬ¼¡¢ÀÜÈø¼ - ¤Î¤É¤Á¤é¤ò»ØÄꤹ¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡£¤â¤·ÀÜƬ¼¤ÈÀÜÈø¼¤ÎξÊý¤¬»Ø - Äꤵ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢ÀÜƬ¼¤Î»ØÄ꤬ͥÀ褵¤ì¤Þ¤¹¡£ +4. ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý - --sbindir=DIR - DNS ¥×¥í¥¥·¥µ¡¼¥Ð¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ - ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/sbin ¤Ç¤¹¡£ - - --bindir=DIR - ¥³¡¼¥É¥»¥Ã¥È¥³¥ó¥Ð¡¼¥¿ mdnconv ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò - »ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/bin ¤Ç¤¹¡£ - - --sysconfdir=DIR - DNS ¥×¥í¥¥·¥µ¡¼¥Ð¤ÎÀßÄê¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¥Ç¥£¥ì¥¯¥È¥ê¤ò - »ØÄꤷ¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/etc ¤Ç¤¹¡£ - - --mandir=DIR - ¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤Î¥¤¥ó¥¹¥È¡¼¥ë¥Ç¥£¥ì¥¯¥È¥ê¤ò»ØÄꤷ¤Þ¤¹¡£ - ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï /usr/local/man ¤Ç¤¹¡£ - ---with-iconv ¥ª¥×¥·¥ç¥ó¤Ç¤Ï¥é¥¤¥Ö¥é¥ê¤À¤±¤ò»ØÄꤷ¤Þ¤¹¡£¤â¤·¥¤¥ó¥¯¥ë¡¼ -¥É¥Õ¥¡¥¤¥ë iconv.h ¤¬¥Ç¥Õ¥©¥ë¥È¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹¤Ë¥¤¥ó¥¹¥È¡¼ -¥ë¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢¤¢¤ë¤¤¤Ï¾¤Ë C ¥³¥ó¥Ñ¥¤¥é¤Ø¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤¿ -¤¤¾ì¹ç¤Ë¤Ï´Ä¶ÊÑ¿ô CFLAGS ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£Î㤨¤Ð - - % CFLAGS=-I/usr/local/include ./configure ... - (sh ·Ï¤Î¥·¥§¥ë¤Î¾ì¹ç) - % setenv CFLAGS -I/usr/local/include; ./configure ... - (csh ·Ï¤Î¥·¥§¥ë¤Î¾ì¹ç) - -¤È¤·¤Þ¤¹¡£ - -configure ¤Ë¤Ï¾¤Ë¤â¿¤¯¤Î¥ª¥×¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¤¬¡¢»Ä¤ê¤Ï°ìÈÌŪ¤Ê¥ª¥×¥·¥ç -¥ó¤Ê¤Î¤ÇÀâÌÀ¤Ï¾Ê¤¤Þ¤¹¡£ - - % ./configure --help - -¤ò¼Â¹Ô¤¹¤ë¤È¥ª¥×¥·¥ç¥ó¤Î°ìÍ÷¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£ - -2. ¥³¥ó¥Ñ¥¤¥ë - -configure ¤ò¼Â¹Ô¤¹¤ë¤È Makefile ¤Ê¤É¤¬À¸À®¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Â³¤±¤Æ make¤ò -¼Â¹Ô¤·¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¤Þ¤¹¡£ - - % make - -3. ¥¤¥ó¥¹¥È¡¼¥ë - -¥¹¡¼¥Ñ¥æ¡¼¥¶¤Ë¤Ê¤Ã¤Æ¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£ - - % su - # make install - -4. Configuration and usage - -¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¥Ä¡¼¥ë (mdnsproxy¡¢mdnconv¡¢runmdn) ¤Î»È¤¤Êý¡¢ÀßÄêÊý -Ë¡¤Ë´Ø¤·¤Æ¤Ï¥ª¥ó¥é¥¤¥ó¥Þ¥Ë¥å¥¢¥ë¤ò¤´Í÷¤¯¤À¤µ¤¤¡£mdnconv ¤È runmdn ¤Ë¤Ä -¤¤¤Æ¤Ï¡¢mDNkit ¤Î¥ê¥¾¥ë¥ÐÀßÄê¥Õ¥¡¥¤¥ë mdn.conf ¤Î¥Þ¥Ë¥å¥¢¥ë¤â»²¾È¤·¤Æ -¤¯¤À¤µ¤¤¡£ - - % man mdnsproxy - % man mdnconv - % man runmdn - % man mdn.conf - - -* ¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý - -¤³¤ÎÇÛÉÛ¥¥Ã¥È¤Ë¤Ï¡¢bind-9.1.1¡¢bind-8.2.3 ¤ª¤è¤Ó squid-2.4-STABLE1 ¤Ë +¤³¤ÎÇÛÉÛ¥¥Ã¥È¤Ë¤Ï¡¢bind-9.1.3¡¢bind-8.2.3 ¤ª¤è¤Ó squid-2.4-STABLE1 ¤Ë ÂФ¹¤ë¥Ñ¥Ã¥Á¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£¥Ñ¥Ã¥Á¤ÎÅö¤ÆÊý¤Ï¡¢¥Ñ¥Ã¥Á¥Õ¥¡¥¤¥ë¤ÎÀèƬ¤Ë ½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¤½¤Á¤é¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ @@ -344,13 +195,60 @@ Solaris ¤Ç¤Ï¡¢¥·¥¹¥Æ¥àÉÕ°¤Î patch ¥³¥Þ¥ó¥É¤¬Àµ¾ï¤ËÆ°ºî¤·¤Ê¤¤¤³¤È¤¬¤¢ ¤Æ¤¯¤À¤µ¤¤¡£ -* ËÜ¥¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¡¢Ì䤤¹ç¤ï¤»¤Ë¤Ä¤¤¤Æ +5. ËÜ¥¥Ã¥È¤¬Âбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à + +Àµ¾ï¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤Ç¤¤ë¤³¤È¤¬³Îǧ¤Ç¤¤Æ¤¤¤ë¤Î¤Ï¡¢¼¡¤Î¥·¥¹¥Æ¥à¤Ç¤¹¡£ + + ------------------------------------------------------------------ + OS iconv configure ¤Î¥ª¥×¥·¥ç¥ó + ================================================================== + FreeBSD 4.4-RELEASE GNU libiconv --with-libiconv + Intel 1.6.1 + ------------------------------------------------------------------- + FreeBSD 3.5.1-RELEASE GNU libiconv --with-libiconv + Intel 1.7 + ------------------------------------------------------------------- + NetBSD 1.5.2 GNU libiconv --with-libiconv + Intel 1.7 + ------------------------------------------------------------------ + Red Hat Linux 7.1 ɸ½à¥é¥¤¥Ö¥é¥ê ¤Ê¤· + Intel (glibc) + ------------------------------------------------------------------ + Red Hat Linux 7.0 ɸ½à¥é¥¤¥Ö¥é¥ê ¤Ê¤· + Intel (glibc) + ------------------------------------------------------------------- + Debian/GNU Linux 2.2r3 ɸ½à¥é¥¤¥Ö¥é¥ê ¤Ê¤· + Intel (glibc) + ------------------------------------------------------------------ + Solaris 2.6 ɸ½à¥é¥¤¥Ö¥é¥ê ¤Ê¤· + Sparc (libc) + ------------------------------------------------------------------ + Windows 2000 GNU libiconv --with-libiconv + (cygwin-1.3.2) *1 1.7 + ------------------------------------------------------------------- + + *1: Æ°ºî¤¹¤ë¤Î¤Ï mdnconv ¤À¤±¤Ç¤¹¡£ + +ËÜ¥¥Ã¥È¤¬Âбþ¤·¤Æ¤¤¤ë/¤·¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Ë´Ø¤¹¤ëºÇ¿·¤Î¾ðÊó¤Ï¡¢¼¡¤Î¤È +¤³¤í¤«¤éé¤ì¤ë mDNkit FAQ ¤Î¥Ú¡¼¥¸¤Ëµ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ + + http://www.nic.ad.jp/jp/research/idn/ + + +6. ËÜ¥¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¡¢Ì䤤¹ç¤ï¤»¤Ë¤Ä¤¤¤Æ ËÜ¥¥Ã¥È¤Ë´Ø¤¹¤ëºÇ¿·¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢ -http://www.nic.ad.jp/jp/research/idn/ ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤ + http://www.nic.ad.jp/jp/research/idn/ + +¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤ ËÜ¥¥Ã¥È¤Ë´Ø¤¹¤ë¥Ð¥°¥ì¥Ý¡¼¥È¤ª¤è¤Ó¥³¥á¥ó¥È¤Ï¡¢¤½¤ì¤¾¤ì -mdnkit-bugs@nic.ad.jp ¤ª¤è¤Ó idn-cmt@nic.ad.jp ¤Ø¤ª´ê¤¤¤·¤Þ¤¹¡£ + + mdnkit-bugs@nic.ad.jp +¤ª¤è¤Ó + idn-cmt@nic.ad.jp + +¤Ø¤ª´ê¤¤¤·¤Þ¤¹¡£ -; $Id: README.ja,v 1.29 2001/06/01 01:13:46 ishisone Exp $ +; $Id: README.ja,v 1.1 2002/01/02 02:46:21 marka Exp $ diff --git a/contrib/idn/mdnkit/acconfig.h b/contrib/idn/mdnkit/acconfig.h index 6915f20a..d0b1671f 100644 --- a/contrib/idn/mdnkit/acconfig.h +++ b/contrib/idn/mdnkit/acconfig.h @@ -1,4 +1,4 @@ -/* $Id: acconfig.h,v 1.8 2001/04/18 02:07:32 ishisone Exp $ */ +/* $Id: acconfig.h,v 1.1 2002/01/02 02:46:21 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,12 +61,6 @@ /* Define as an appropriate type (ex. int) if your system doesn't have. */ #undef BOOL -/* Define if the prototype of gethost*_r is glibc flavor. */ -#undef GETHOST_R_GLIBC_FLAVOR - -/* Define as the type of the 2nd argument of gethostbyaddr. */ -#undef GHBA_ADDRLEN_T - @BOTTOM@ /* Define as the pathname of the shared libc object if your system has one. */ #undef SOPATH_LIBC diff --git a/contrib/idn/mdnkit/aclocal.m4 b/contrib/idn/mdnkit/aclocal.m4 index 1ddc51a9..7e35578c 100644 --- a/contrib/idn/mdnkit/aclocal.m4 +++ b/contrib/idn/mdnkit/aclocal.m4 @@ -1,5 +1,5 @@ ## -## $Id: aclocal.m4,v 1.5 2001/04/19 07:20:51 ishisone Exp $ +## $Id: aclocal.m4,v 1.1 2002/01/02 02:46:21 marka Exp $ ## dnl dnl AC_ACE_PREFIX(ace-name, default) diff --git a/contrib/idn/mdnkit/config.guess b/contrib/idn/mdnkit/config.guess index 0ce538bb..dff9e481 100755 --- a/contrib/idn/mdnkit/config.guess +++ b/contrib/idn/mdnkit/config.guess @@ -1,8 +1,10 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. -# + +timestamp='2001-09-04' + # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or @@ -30,40 +32,97 @@ # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# +# don't specify an explicit build system type. -# Use $HOST_CC if defined. $CC may point to a cross-compiler -if test x"$CC_FOR_BUILD" = x; then - if test x"$HOST_CC" != x; then - CC_FOR_BUILD="$HOST_CC" - else - if test x"$CC" != x; then - CC_FOR_BUILD="$CC" - else - CC_FOR_BUILD=cc - fi - fi +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <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 8/24/94.) +# (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 - # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in @@ -77,7 +136,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # object file format. # Determine the machine/vendor (is the vendor relevant). case "${UNAME_MACHINE}" in - amiga) machine=m68k-cbm ;; + amiga) machine=m68k-unknown ;; arm32) machine=arm-unknown ;; atari*) machine=m68k-atari ;; sun3*) machine=m68k-sun ;; @@ -87,16 +146,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ibmrt|romp-ibm) machine=romp-ibm ;; *) machine=${UNAME_MACHINE}-unknown ;; esac - # The Operating System including object format. - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE}" in + i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac # The OS release release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: @@ -137,6 +205,7 @@ main: jsr \$26,exit .end main EOF + eval $set_cc_for_build $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then case `./$dummy` in @@ -158,6 +227,9 @@ EOF 2-307) UNAME_MACHINE="alphaev67" ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; esac fi rm -f $dummy.s $dummy @@ -173,7 +245,7 @@ EOF echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) - echo m68k-cbm-sysv4 + echo m68k-unknown-sysv4 exit 0;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} @@ -205,7 +277,7 @@ EOF arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; - SR2?01:HI-UX/MPP:*:*) + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) @@ -261,6 +333,9 @@ EOF aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; + sparc*:NetBSD:*) + echo `uname -p`-unknown-netbsd${UNAME_RELEASE} + exit 0 ;; atari*:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; @@ -318,6 +393,7 @@ EOF echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include <stdio.h> /* for printf() prototype */ @@ -341,10 +417,13 @@ EOF EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm $dummy.c $dummy && exit 0 + && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; @@ -392,11 +471,20 @@ EOF ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i?86:AIX:*:*) + i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include <sys/systemcfg.h> @@ -408,7 +496,7 @@ EOF exit(0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then @@ -417,9 +505,9 @@ EOF echo rs6000-ibm-aix3.2 fi exit 0 ;; - *:AIX:*:4) + *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` - if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc @@ -427,7 +515,7 @@ EOF if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=4.${UNAME_RELEASE} + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; @@ -453,10 +541,29 @@ EOF echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) + case "${HPUX_REV}" in + 11.[0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + esac ;; + esac + fi ;; + esac + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE @@ -490,13 +597,19 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - rm -f $dummy.c $dummy + (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy + fi ;; esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; 3050*:HI-UX:*:*) + eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include <unistd.h> int @@ -522,7 +635,7 @@ EOF exit (0); } EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; @@ -532,7 +645,7 @@ EOF 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; - *9??*:MPE/iX:*:*) + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) @@ -541,7 +654,7 @@ EOF hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; - i?86:OSF1:*:*) + i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else @@ -576,37 +689,39 @@ EOF echo xmp-cray-unicos exit 0 ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY*T3E:*:*:*) + CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY-2:*:*:*) echo cray2-cray-unicos exit 0 ;; - F300:UNIX_System_V:*:*) + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; - F301:UNIX_System_V:*:*) - echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` - exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; - i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) @@ -627,6 +742,9 @@ EOF i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we @@ -645,187 +763,96 @@ EOF *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; - *:Linux:*:*) - + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in + big) echo mips-unknown-linux-gnu && exit 0 ;; + little) echo mipsel-unknown-linux-gnu && exit 0 ;; + esac + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. - ld_help_string=`cd /; ld --help 2>&1` - ld_supported_emulations=`echo $ld_help_string \ - | sed -ne '/supported emulations:/!d + ld_supported_targets=`cd /; ld --help 2>&1 \ + | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g - s/.*supported emulations: *// + s/.*supported targets: *// s/ .*// p'` - case "$ld_supported_emulations" in - *ia64) - echo "${UNAME_MACHINE}-unknown-linux" - exit 0 + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; - i?86linux) + a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 - ;; - elf_i?86) - echo "${UNAME_MACHINE}-pc-linux" - exit 0 - ;; - i?86coff) + exit 0 ;; + coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 - ;; - sparclinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - armlinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32arm*) - echo "${UNAME_MACHINE}-unknown-linux-gnuoldld" - exit 0 - ;; - armelf_linux*) - echo "${UNAME_MACHINE}-unknown-linux-gnu" - exit 0 - ;; - m68klinux) - echo "${UNAME_MACHINE}-unknown-linux-gnuaout" - exit 0 - ;; - elf32ppc | elf32ppclinux) - # Determine Lib Version - cat >$dummy.c <<EOF -#include <features.h> -#if defined(__GLIBC__) -extern char __libc_version[]; -extern char __libc_release[]; -#endif -main(argc, argv) - int argc; - char *argv[]; -{ -#if defined(__GLIBC__) - printf("%s %s\n", __libc_version, __libc_release); -#else - printf("unkown\n"); -#endif - return 0; -} -EOF - LIBC="" - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null - if test "$?" = 0 ; then - ./$dummy | grep 1\.99 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.c $dummy - echo powerpc-unknown-linux-gnu${LIBC} - exit 0 - ;; + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; esac - - if test "${UNAME_MACHINE}" = "alpha" ; then - cat <<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 - LIBC="" - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - esac - - objdump --private-headers $dummy | \ - grep ld.so.1 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 - elif test "${UNAME_MACHINE}" = "mips" ; then - cat >$dummy.c <<EOF -#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 __MIPSEB__ - printf ("%s-unknown-linux-gnu\n", argv[1]); -#endif -#ifdef __MIPSEL__ - printf ("%sel-unknown-linux-gnu\n", argv[1]); -#endif - return 0; -} -EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - elif test "${UNAME_MACHINE}" = "s390"; then - echo s390-ibm-linux && exit 0 - else - # Either a pre-BFD a.out linker (linux-gnuoldld) - # or one that does not give us useful --help. - # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. - # If ld does not provide *any* "supported emulations:" - # that means it is gnuoldld. - echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" - test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - - case "${UNAME_MACHINE}" in - i?86) - VENDOR=pc; - ;; - *) - VENDOR=unknown; - ;; - esac - # Determine whether the default compiler is a.out or elf - cat >$dummy.c <<EOF + # 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 */ @@ -836,28 +863,30 @@ EOF #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 - printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); + printf ("%s-pc-linux-gnu\n", argv[1]); # else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); + printf ("%s-pc-linux-gnulibc1\n", argv[1]); # endif # else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); + printf ("%s-pc-linux-gnulibc1\n", argv[1]); # endif #else - printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); + printf ("%s-pc-linux-gnuaout\n", argv[1]); #endif return 0; } EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i?86:DYNIX/ptx:4*:*) + $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; - i?86:UNIX_SV:4.2MP:2.*) + i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, @@ -865,7 +894,7 @@ EOF # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; - i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} @@ -873,16 +902,15 @@ EOF echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; - i?86:*:5:7*) - # Fixed at (any) Pentium or better - UNAME_MACHINE=i586 - if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then - echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; - i?86:*:3.2:*) + i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` echo ${UNAME_MACHINE}-pc-isc$UNAME_REL @@ -900,7 +928,7 @@ EOF echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; - i?86:*DOS:*:*) + i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; pc:*:*:*) @@ -928,7 +956,7 @@ EOF exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.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` @@ -939,21 +967,24 @@ EOF 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:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; - i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*) + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; - rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; @@ -971,8 +1002,8 @@ EOF echo ns32k-sni-sysv fi exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says <Richard.M.Bartel@ccMail.Census.GOV> + 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*) @@ -984,10 +1015,14 @@ EOF # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; - news*:NEWS-OS:*:6*) + news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) @@ -1030,20 +1065,64 @@ EOF *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; - NSR-W:NONSTOP_KERNEL:*:*) + NSR-[KW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 +eval $set_cc_for_build cat >$dummy.c <<EOF #ifdef _SEQUENT_ # include <sys/types.h> @@ -1130,11 +1209,24 @@ main () #endif #if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif +# if !defined (ultrix) +# include <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) @@ -1145,7 +1237,7 @@ main () } EOF -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 rm -f $dummy.c $dummy # Apollos put the system type in the environment. @@ -1178,6 +1270,48 @@ then esac fi -#echo '(Unable to guess system type)' 1>&2 +cat >&2 <<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: diff --git a/contrib/idn/mdnkit/config.sub b/contrib/idn/mdnkit/config.sub index c8e77851..393f13d3 100755 --- a/contrib/idn/mdnkit/config.sub +++ b/contrib/idn/mdnkit/config.sub @@ -1,8 +1,10 @@ #! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000 +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. -# + +timestamp='2001-09-07' + # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. @@ -27,7 +29,6 @@ # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. -# Written by Per Bothner <bothner@cygnus.com>. # Please send patches to <config-patches@gnu.org>. # # Configuration subroutine to validate and canonicalize a configuration type. @@ -50,30 +51,73 @@ # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. -if [ x$1 = x ] -then - echo Configuration name missing. 1>&2 - echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 - echo "or $0 ALIAS" 1>&2 - echo where ALIAS is a recognized configuration type. 1>&2 - exit 1 -fi +me=`echo "$0" | sed -e 's,.*/,,'` -# First pass through any local machine types. -case $1 in - *local*) - echo $1 - exit 0 - ;; - *) - ;; +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to <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*) + nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; @@ -99,7 +143,7 @@ case $os in -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple) + -apple | -axis) os= basic_machine=$1 ;; @@ -113,6 +157,14 @@ case $os in os=-vxworks basic_machine=$1 ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; -hiux*) os=-hiuxwe2 ;; @@ -171,30 +223,50 @@ esac case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. - tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ - | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ - | 580 | i960 | h8300 \ - | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \ - | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ - | hppa64 \ - | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \ - | alphaev6[78] \ - | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ - | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ - | mips64orion | mips64orionel | mipstx39 | mipstx39el \ - | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ - | mips64vr5000 | miprs64vr5000el | mcore \ - | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ - | thumb | d10v | fr30 | avr) + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dsp16xx \ + | fr30 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el | mips64vr4300 \ + | mips64vr4300el | mips64vr5000 | mips64vr5000el \ + | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ + | mipsisa32 \ + | mn10200 | mn10300 \ + | ns16k | ns32k \ + | openrisc \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | s390 | s390x \ + | sh | sh[34] | sh[34]eb | shbe | shle \ + | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ + | stormy16 | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 \ + | we32k \ + | x86 | xscale \ + | z8k) basic_machine=$basic_machine-unknown ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl) + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. - i[34567]86) + i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. @@ -203,28 +275,43 @@ case $basic_machine in exit 1 ;; # Recognize the basic CPU types with company name. - # FIXME: clean up the formatting here. - vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ - | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ - | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ - | xmp-* | ymp-* \ - | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \ - | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \ - | hppa2.0n-* | hppa64-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \ - | alphaev6[78]-* \ - | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ - | clipper-* | orion-* \ - | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ - | mipstx39-* | mipstx39el-* | mcore-* \ - | f301-* | armv*-* | s390-* | sv1-* | t3e-* \ - | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ - | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \ - | bs2000-*) + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alphapca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armv*-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c54x-* \ + | clipper-* | cray2-* | cydra-* \ + | d10v-* | d30v-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | m32r-* \ + | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ + | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ + | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | s390-* | s390x-* \ + | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ + | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ + | v850-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ + | ymp-* \ + | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. @@ -261,14 +348,14 @@ case $basic_machine in os=-sysv ;; amiga | amiga-*) - basic_machine=m68k-cbm + basic_machine=m68k-unknown ;; amigaos | amigados) - basic_machine=m68k-cbm + basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) - basic_machine=m68k-cbm + basic_machine=m68k-unknown os=-sysv4 ;; apollo68) @@ -315,13 +402,16 @@ case $basic_machine in basic_machine=cray2-cray os=-unicos ;; - [ctj]90-cray) - basic_machine=c90-cray + [cjt]90) + basic_machine=${basic_machine}-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; da30 | da30-*) basic_machine=m68k-da30 ;; @@ -369,6 +459,10 @@ case $basic_machine in basic_machine=tron-gmicro os=-sysv ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 @@ -444,19 +538,19 @@ case $basic_machine in basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[34567]86v32) + i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; - i[34567]86v4*) + i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; - i[34567]86v) + i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; - i[34567]86sol2) + i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; @@ -468,14 +562,6 @@ case $basic_machine in basic_machine=i386-unknown os=-vsta ;; - i386-go32 | go32) - basic_machine=i386-unknown - os=-go32 - ;; - i386-mingw32 | mingw32) - basic_machine=i386-unknown - os=-mingw32 - ;; iris | iris4d) basic_machine=mips-sgi case $os in @@ -501,6 +587,10 @@ case $basic_machine in basic_machine=ns32k-utek os=-sysv ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; miniframe) basic_machine=m68000-convergent ;; @@ -531,7 +621,7 @@ case $basic_machine in os=-coff ;; msdos) - basic_machine=i386-unknown + basic_machine=i386-pc os=-msdos ;; mvs) @@ -595,6 +685,10 @@ case $basic_machine in basic_machine=i960-intel os=-mon960 ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; np1) basic_machine=np1-gould ;; @@ -630,28 +724,28 @@ case $basic_machine in pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5 | k5 | k6 | nexen) + pentium | p5 | k5 | k6 | nexgen) basic_machine=i586-pc ;; - pentiumpro | p6 | 6x86) + pentiumpro | p6 | 6x86 | athlon) basic_machine=i686-pc ;; pentiumii | pentium2) - basic_machine=i786-pc + basic_machine=i686-pc ;; - pentium-* | p5-* | k5-* | k6-* | nexen-*) + pentium-* | p5-* | k5-* | k6-* | nexgen-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - pentiumpro-* | p6-* | 6x86-*) + pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; - power) basic_machine=rs6000-ibm + power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; @@ -663,9 +757,23 @@ case $basic_machine in ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; ps2) basic_machine=i386-ibm ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; rom68k) basic_machine=m68k-rom68k os=-coff @@ -757,6 +865,10 @@ case $basic_machine in basic_machine=t3e-cray os=-unicos ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; tx39) basic_machine=mipstx39-unknown ;; @@ -809,6 +921,10 @@ case $basic_machine in basic_machine=hppa1.1-winbond os=-proelf ;; + windows32) + basic_machine=i386-pc + os=-windows32-msvcrt + ;; xmp) basic_machine=xmp-cray os=-unicos @@ -852,13 +968,20 @@ case $basic_machine in vax) basic_machine=vax-dec ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; - sparc | sparcv9) + sh3 | sh4 | sh3eb | sh4eb) + basic_machine=sh-unknown + ;; + sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) @@ -880,6 +1003,9 @@ case $basic_machine in basic_machine=c4x-none os=-coff ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 @@ -936,15 +1062,18 @@ case $os in | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit*) + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in - x86-* | i[34567]86-*) + x86-* | i*86-*) ;; *) os=-nto$os @@ -1000,7 +1129,7 @@ case $os in -ns2 ) os=-nextstep2 ;; - -nsk) + -nsk*) os=-nsk ;; # Preserve the version number of sinix5. @@ -1037,7 +1166,7 @@ case $os in -xenix) os=-xenix ;; - -*mint | -*MiNT) + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) @@ -1071,6 +1200,9 @@ case $basic_machine in arm*-semi) os=-aout ;; + pdp10-*) + os=-tops20 + ;; pdp11-*) os=-none ;; @@ -1179,7 +1311,7 @@ case $basic_machine in *-masscomp) os=-rtu ;; - f301-fujitsu) + f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) @@ -1257,12 +1389,23 @@ case $basic_machine in -mpw* | -macos*) vendor=apple ;; - -*mint | -*MiNT) + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; + -vos*) + vendor=stratus + ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/contrib/idn/mdnkit/configure b/contrib/idn/mdnkit/configure index f462b5bb..3f51ec91 100755 --- a/contrib/idn/mdnkit/configure +++ b/contrib/idn/mdnkit/configure @@ -12,6 +12,8 @@ ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: ac_help="$ac_help + --enable-debug enable debug codes [default=no]" +ac_help="$ac_help --with-logdir=DIR mdnsproxy's log files are in DIR. [default=LOCALSTATEDIR/mdnsproxy]" ac_help="$ac_help @@ -43,9 +45,21 @@ ac_help="$ac_help ac_help="$ac_help --with-amc-ace-r-prefix=PREFIX prefix for AMC-ACE-R encoding [amc3-]" ac_help="$ac_help + --with-amc-ace-v-prefix=PREFIX prefix for AMC-ACE-V encoding [amc4-]" +ac_help="$ac_help + --with-amc-ace-w-prefix=PREFIX prefix for AMC-ACE-W encoding [amc5-]" +ac_help="$ac_help + --with-amc-ace-z-prefix=PREFIX prefix for AMC-ACE-Z encoding [zq--]" +ac_help="$ac_help + --with-mace-prefix=PREFIX prefix for MACE encoding [mq--]" +ac_help="$ac_help + --with-libiconv=IPREFIX GNU libiconv are installed in IPREFIX [PREFIX]" +ac_help="$ac_help + --with-iconv-include=DIR iconv include files are in DIR []" +ac_help="$ac_help --with-iconv=LIB special library for iconv []" ac_help="$ac_help - --with-iconv-sofile=PATH shared library file for libiconv []" + --with-iconv-sofile=PATH shared library file for libiconv []" ac_help="$ac_help --with-preference=ARG change the default configuration to the one suitable for ARG." @@ -596,7 +610,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:600: checking host system type" >&5 +echo "configure:614: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -617,6 +631,19 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 +debug=no +# Check whether --enable-debug or --disable-debug was given. +if test "${enable_debug+set}" = set; then + enableval="$enable_debug" + debug=$enableval +fi + +case "$enableval" in +yes) + CFLAGS="$CFLAGS -DDEBUG" + ;; +esac + logdir=no # Check whether --with-logdir or --without-logdir was given. if test "${with_logdir+set}" = set; then @@ -664,6 +691,7 @@ fi case "$utf8name" in no) + utf8name=UTF-8 ;; yes) { echo "configure: error: You must specify NAME to --with-utf8 option." 1>&2; exit 1; } @@ -946,8 +974,160 @@ EOF fi +ace_prefix=no +# Check whether --with-amc-ace-v-prefix or --without-amc-ace-v-prefix was given. +if test "${with_amc_ace_v_prefix+set}" = set; then + withval="$with_amc_ace_v_prefix" + ace_prefix=$withval +fi + +case "${ace_prefix}" in +no) + ace_prefix="amc4-" + ;; +yes) + { echo "configure: error: You must specify PREFIX to --with-amc-ace-v-prefix option." 1>&2; exit 1; } + ;; +esac +if test "${ace_prefix}" != ""; then + cat >> confdefs.h <<EOF +#define MDN_AMCACEV_PREFIX "${ace_prefix}" +EOF + +fi + +ace_prefix=no +# Check whether --with-amc-ace-w-prefix or --without-amc-ace-w-prefix was given. +if test "${with_amc_ace_w_prefix+set}" = set; then + withval="$with_amc_ace_w_prefix" + ace_prefix=$withval +fi + +case "${ace_prefix}" in +no) + ace_prefix="amc5-" + ;; +yes) + { echo "configure: error: You must specify PREFIX to --with-amc-ace-w-prefix option." 1>&2; exit 1; } + ;; +esac +if test "${ace_prefix}" != ""; then + cat >> confdefs.h <<EOF +#define MDN_AMCACEW_PREFIX "${ace_prefix}" +EOF + +fi + +ace_prefix=no +# Check whether --with-amc-ace-z-prefix or --without-amc-ace-z-prefix was given. +if test "${with_amc_ace_z_prefix+set}" = set; then + withval="$with_amc_ace_z_prefix" + ace_prefix=$withval +fi + +case "${ace_prefix}" in +no) + ace_prefix="zq--" + ;; +yes) + { echo "configure: error: You must specify PREFIX to --with-amc-ace-z-prefix option." 1>&2; exit 1; } + ;; +esac +if test "${ace_prefix}" != ""; then + cat >> confdefs.h <<EOF +#define MDN_AMCACEZ_PREFIX "${ace_prefix}" +EOF + +fi + +ace_prefix=no +# Check whether --with-mace-prefix or --without-mace-prefix was given. +if test "${with_mace_prefix+set}" = set; then + withval="$with_mace_prefix" + ace_prefix=$withval +fi + +case "${ace_prefix}" in +no) + ace_prefix="mq--" + ;; +yes) + { echo "configure: error: You must specify PREFIX to --with-mace-prefix option." 1>&2; exit 1; } + ;; +esac +if test "${ace_prefix}" != ""; then + cat >> confdefs.h <<EOF +#define MDN_MACE_PREFIX "${ace_prefix}" +EOF + +fi + + +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 X$prefix = XNONE ; then + libiconv=$ac_default_prefix + else + libiconv=$prefix + fi + ICONVINC="-I$libiconv/include" + ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv" + ;; +*) + ICONVINC="-I$libiconv/include" + ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv" + ;; +esac + +iconv_include=unspec +# 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) + echo "configure: warning: You must supply DIR to --with-iconv-include option. + Ignored." 1>&2 + ICONVINC= + ;; +*) + ICONVINC="-I$iconv_include" + ;; +esac + +if test "X$ICONVINC" != X ; then + iconv_include="`echo X$ICONVINC | sed -e 's/^X-I//'`" + if test ! -f "$iconv_include/iconv.h" ; then + { echo "configure: error: iconv.h doesn't exist in $iconv_include" 1>&2; exit 1; } + fi +fi + -iconv=no + +iconv=unspec # Check whether --with-iconv or --without-iconv was given. if test "${with_iconv+set}" = set; then withval="$with_iconv" @@ -955,6 +1135,8 @@ if test "${with_iconv+set}" = set; then fi case "$iconv" in +unspec) + ;; no) ICONVLIB= ;; @@ -990,7 +1172,7 @@ guess) ICONVSOFILE=none else echo $ac_n "checking pathname of iconv shared library""... $ac_c" 1>&6 -echo "configure:994: checking pathname of iconv shared library" >&5 +echo "configure:1176: checking pathname of iconv shared library" >&5 ic_libdir= ic_libname= case "$host" in @@ -1081,15 +1263,25 @@ case "$host" in PRELOAD_VAR="_RLD_LIST" PRELOAD_LAST=":DEFAULT" ;; +*-netbsd*) + if test -x /usr/bin/file -a -x /usr/bin/grep ; then + case "`/usr/bin/file /usr/bin/grep`" in + *ELF*) + PRELOAD_SEP=" " + ;; + esac + fi + ;; esac + # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1093: checking for $ac_word" >&5 +echo "configure:1285: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1119,7 +1311,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1123: checking for $ac_word" >&5 +echo "configure:1315: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1170,7 +1362,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1174: checking for $ac_word" >&5 +echo "configure:1366: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1202,7 +1394,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1206: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1398: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1213,12 +1405,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1217 "configure" +#line 1409 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1414: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1244,12 +1436,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1248: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1440: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1253: checking whether we are using GNU C" >&5 +echo "configure:1445: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1258,7 +1450,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1262: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1454: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1277,7 +1469,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1281: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1473: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1320,7 +1512,7 @@ fi # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1324: checking for a BSD compatible install" >&5 +echo "configure:1516: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1442,7 +1634,7 @@ else fi echo $ac_n "checking build system type""... $ac_c" 1>&6 -echo "configure:1446: checking build system type" >&5 +echo "configure:1638: checking build system type" >&5 build_alias=$build case "$build_alias" in @@ -1462,7 +1654,7 @@ echo "$ac_t""$build" 1>&6 # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1466: checking for $ac_word" >&5 +echo "configure:1658: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1501,7 +1693,7 @@ ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1505: checking for ld used by GCC" >&5 +echo "configure:1697: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -1525,10 +1717,10 @@ echo "configure:1505: checking for ld used by GCC" >&5 esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1529: checking for GNU ld" >&5 +echo "configure:1721: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1532: checking for non-GNU ld" >&5 +echo "configure:1724: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1563,7 +1755,7 @@ else fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1567: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:1759: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1579,7 +1771,7 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1583: checking for BSD-compatible nm" >&5 +echo "configure:1775: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1615,7 +1807,7 @@ NM="$ac_cv_path_NM" echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1619: checking whether ln -s works" >&5 +echo "configure:1811: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1664,8 +1856,8 @@ test x"$silent" = xyes && libtool_flags="$libtool_flags --silent" case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. - echo '#line 1668 "configure"' > conftest.$ac_ext - if { (eval echo configure:1669: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 1860 "configure"' > conftest.$ac_ext + if { (eval echo configure:1861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" @@ -1686,19 +1878,19 @@ case "$lt_target" in SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -echo "configure:1690: checking whether the C compiler needs -belf" >&5 +echo "configure:1882: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1695 "configure" +#line 1887 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:1702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* lt_cv_cc_needs_belf=yes else @@ -1801,7 +1993,7 @@ exec 5>>./config.log echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1805: checking how to run the C preprocessor" >&5 +echo "configure:1997: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1816,13 +2008,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext <<EOF -#line 1820 "configure" +#line 2012 "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:1826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1833,13 +2025,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -#line 1837 "configure" +#line 2029 "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:1843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2035: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1850,13 +2042,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext <<EOF -#line 1854 "configure" +#line 2046 "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:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2052: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1884,17 +2076,17 @@ for ac_hdr in unistd.h locale.h langinfo.h resolv.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1888: checking for $ac_hdr" >&5 +echo "configure:2080: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1893 "configure" +#line 2085 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1898: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2090: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1924,17 +2116,17 @@ for ac_hdr in sys/select.h arpa/nameser.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1928: checking for $ac_hdr" >&5 +echo "configure:2120: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1933 "configure" +#line 2125 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1938: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2130: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -1964,17 +2156,17 @@ for ac_hdr in dlfcn.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1968: checking for $ac_hdr" >&5 +echo "configure:2160: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1973 "configure" +#line 2165 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1978: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2170: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2001,13 +2193,51 @@ fi done +saved_CPPFLAGS=$CPPFLAGS +CPPFLAGS="$CPPFLAGS $ICONVINC" +ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for iconv.h""... $ac_c" 1>&6 +echo "configure:2201: checking for iconv.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2206 "configure" +#include "confdefs.h" +#include <iconv.h> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +{ echo "configure: error: iconv.h doesn't exist" 1>&2; exit 1; } +fi + +CPPFLAGS=$saved_CPPFLAGS + echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6 -echo "configure:2006: checking for uid_t in sys/types.h" >&5 +echo "configure:2236: checking for uid_t in sys/types.h" >&5 if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2011 "configure" +#line 2241 "configure" #include "confdefs.h" #include <sys/types.h> EOF @@ -2036,12 +2266,12 @@ EOF fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2040: checking for ANSI C header files" >&5 +echo "configure:2270: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2045 "configure" +#line 2275 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -2049,7 +2279,7 @@ else #include <float.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2066,7 +2296,7 @@ rm -f conftest* if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext <<EOF -#line 2070 "configure" +#line 2300 "configure" #include "confdefs.h" #include <string.h> EOF @@ -2084,7 +2314,7 @@ fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext <<EOF -#line 2088 "configure" +#line 2318 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -2105,7 +2335,7 @@ if test "$cross_compiling" = yes; then : else cat > conftest.$ac_ext <<EOF -#line 2109 "configure" +#line 2339 "configure" #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -2116,7 +2346,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); exit (0); } EOF -if { (eval echo configure:2120: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -2140,12 +2370,12 @@ EOF fi echo $ac_n "checking for BOOL""... $ac_c" 1>&6 -echo "configure:2144: checking for BOOL" >&5 +echo "configure:2374: checking for BOOL" >&5 if eval "test \"`echo '$''{'ac_cv_type_BOOL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2149 "configure" +#line 2379 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -2174,7 +2404,7 @@ fi echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -echo "configure:2178: checking for socket in -lsocket" >&5 +echo "configure:2408: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2182,7 +2412,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <<EOF -#line 2186 "configure" +#line 2416 "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 @@ -2193,7 +2423,7 @@ int main() { socket() ; return 0; } EOF -if { (eval echo configure:2197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2221,7 +2451,7 @@ else fi echo $ac_n "checking for inet_addr in -lnsl""... $ac_c" 1>&6 -echo "configure:2225: checking for inet_addr in -lnsl" >&5 +echo "configure:2455: checking for inet_addr in -lnsl" >&5 ac_lib_var=`echo nsl'_'inet_addr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2229,7 +2459,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <<EOF -#line 2233 "configure" +#line 2463 "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 @@ -2240,7 +2470,7 @@ int main() { inet_addr() ; return 0; } EOF -if { (eval echo configure:2244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2268,7 +2498,7 @@ else fi echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:2272: checking for dlopen in -ldl" >&5 +echo "configure:2502: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2276,7 +2506,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <<EOF -#line 2280 "configure" +#line 2510 "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 @@ -2287,7 +2517,7 @@ int main() { dlopen() ; return 0; } EOF -if { (eval echo configure:2291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2319,12 +2549,12 @@ fi for ac_func in vsnprintf setvbuf setlocale nl_langinfo memmove bcopy syslog do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2323: checking for $ac_func" >&5 +echo "configure:2553: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2328 "configure" +#line 2558 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2347,7 +2577,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2351: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2374,12 +2604,12 @@ done for ac_func in gethostbyname gethostbyname2 gethostbyaddr do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2378: checking for $ac_func" >&5 +echo "configure:2608: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2383 "configure" +#line 2613 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2402,7 +2632,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2429,12 +2659,12 @@ done for ac_func in gethostbyname_r gethostbyname2_r gethostbyaddr_r do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2433: checking for $ac_func" >&5 +echo "configure:2663: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2438 "configure" +#line 2668 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2457,7 +2687,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2691: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2484,12 +2714,12 @@ done for ac_func in getipnodebyname getipnodebyaddr freehostent do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2488: checking for $ac_func" >&5 +echo "configure:2718: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2493 "configure" +#line 2723 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2512,7 +2742,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2539,12 +2769,12 @@ done for ac_func in getaddrinfo freeaddrinfo getnameinfo do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2543: checking for $ac_func" >&5 +echo "configure:2773: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2548 "configure" +#line 2778 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2567,7 +2797,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2594,12 +2824,12 @@ done for ac_func in dlopen dlsym do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2598: checking for $ac_func" >&5 +echo "configure:2828: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2603 "configure" +#line 2833 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2622,7 +2852,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2648,18 +2878,51 @@ done echo $ac_n "checking flavor of gethostbyaddr""... $ac_c" 1>&6 -echo "configure:2652: checking flavor of gethostbyaddr" >&5 +echo "configure:2882: checking flavor of gethostbyaddr" >&5 if eval "test \"`echo '$''{'ac_cv_flavor_gethostbyaddr'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$cross_compiling" = yes; then - ac_cv_flavor_gethostbyaddr=traditional + ac_cv_flavor_gethostbyaddr=unknown +if test "$cross_compiling" = yes; then + ac_cv_flavor_gethostbyaddr=unknown else cat > conftest.$ac_ext <<EOF -#line 2660 "configure" +#line 2891 "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:2907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_gethostbyaddr=glibc2_2 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_gethostbyaddr=unknown +else + cat > conftest.$ac_ext <<EOF +#line 2921 "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; @@ -2670,36 +2933,276 @@ int main() { } EOF -if { (eval echo configure:2674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then - ac_cv_flavor_gethostbyaddr=standard + ac_cv_flavor_gethostbyaddr=glibc else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - rm -fr conftest* +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_gethostbyaddr=unknown +else + cat > conftest.$ac_ext <<EOF +#line 2951 "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:2967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then ac_cv_flavor_gethostbyaddr=traditional +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 fi rm -fr conftest* fi +if test "$ac_cv_func_gethostbyaddr" = no ; then + ac_cv_flavor_gethostbyaddr=none +fi fi echo "$ac_t""$ac_cv_flavor_gethostbyaddr" 1>&6 -if test "$ac_cv_flavor_gethostbyaddr" = "standard"; then - cat >> confdefs.h <<\EOF -#define GHBA_ADDRLEN_T size_t + +case "$ac_cv_flavor_gethostbyaddr" in +glibc2_2) + ac_cv_type_ghba_addr_t='const void *' + ac_cv_type_ghba_addrlen_t='socklen_t' + ;; +glibc) + ac_cv_type_ghba_addr_t='const char *' + ac_cv_type_ghba_addrlen_t='size_t' + ;; +traditional | none) + ac_cv_type_ghba_addr_t='const char *' + ac_cv_type_ghba_addrlen_t='int' + ;; +*) + echo "configure: warning: runmdn command will not be built." 1>&2 + ;; +esac +cat >> confdefs.h <<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:3011: checking flavor of getnameinfo" >&5 +if eval "test \"`echo '$''{'ac_cv_flavor_getnameinfo'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - cat >> confdefs.h <<\EOF -#define GHBA_ADDRLEN_T int + ac_cv_flavor_getnameinfo=unknown +if test "$cross_compiling" = yes; then + ac_cv_flavor_getnameinfo=unknown +else + cat > conftest.$ac_ext <<EOF +#line 3020 "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:3038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_getnameinfo=glibc2_2_2 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_getnameinfo=unknown +else + cat > conftest.$ac_ext <<EOF +#line 3052 "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:3069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_getnameinfo=rfc2553bis_03 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_getnameinfo=unknown +else + cat > conftest.$ac_ext <<EOF +#line 3083 "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:3100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_getnameinfo=rfc2553 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$cross_compiling" = yes; then + ac_cv_flavor_getnameinfo=unknown +else + cat > conftest.$ac_ext <<EOF +#line 3114 "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:3131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_flavor_getnameinfo=rfc2133 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -fr conftest* +fi + +if test "$ac_cv_func_getnameinfo" = no ; then + ac_cv_flavor_getnameinfo=none +fi +fi + +echo "$ac_t""$ac_cv_flavor_getnameinfo" 1>&6 + +case "$ac_cv_flavor_getnameinfo" in +glibc2_2_2) + ac_cv_type_gni_salen_t='socklen_t' + ac_cv_type_gni_hostlen_t='socklen_t' + ac_cv_type_gni_servlen_t='socklen_t' + ac_cv_type_gni_flags_t='unsigned int' + ;; +rfc2553bis_03) + ac_cv_type_gni_salen_t='socklen_t' + ac_cv_type_gni_hostlen_t='socklen_t' + ac_cv_type_gni_servlen_t='socklen_t' + ac_cv_type_gni_flags_t='int' + ;; +rfc2553) + ac_cv_type_gni_salen_t='socklen_t' + ac_cv_type_gni_hostlen_t='size_t' + ac_cv_type_gni_servlen_t='size_t' + ac_cv_type_gni_flags_t='int' + ;; +rfc2133 | none) + ac_cv_type_gni_salen_t='size_t' + ac_cv_type_gni_hostlen_t='size_t' + ac_cv_type_gni_servlen_t='size_t' + ac_cv_type_gni_flags_t='int' + ;; +*) + echo "configure: warning: runmdn command will not be built." 1>&2 + ;; +esac + +cat >> confdefs.h <<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 + + +RUNMDN_SUBDIR=runmdn +if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then + RUNMDN_SUBDIR= +fi +if test "$ac_cv_flavor_getnameinfo" = unknown ; then + RUNMDN_SUBDIR= fi + if test "$find_gethost_r" = yes; then echo $ac_n "checking flavor of gethostbyname_r""... $ac_c" 1>&6 -echo "configure:2703: checking flavor of gethostbyname_r" >&5 +echo "configure:3206: checking flavor of gethostbyname_r" >&5 if eval "test \"`echo '$''{'ac_cv_flavor_gethost_r'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2707,11 +3210,14 @@ else ac_cv_flavor_gethost_r=sun else cat > conftest.$ac_ext <<EOF -#line 2711 "configure" +#line 3214 "configure" #include "confdefs.h" -#include <stdio.h> +#include <stddef.h> +#include <sys/types.h> +#include <sys/socket.h> #include <netdb.h> +#include <stdio.h> int main() { int err = 0; @@ -2726,7 +3232,7 @@ int main() } EOF -if { (eval echo configure:2730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_flavor_gethost_r=glibc else @@ -2751,7 +3257,7 @@ fi echo $ac_n "checking for libc shared object""... $ac_c" 1>&6 -echo "configure:2755: checking for libc shared object" >&5 +echo "configure:3261: checking for libc shared object" >&5 shobj_name=libc shobj_path= case "$host" in @@ -2789,7 +3295,7 @@ fi echo $ac_n "checking for libnsl shared object""... $ac_c" 1>&6 -echo "configure:2793: checking for libnsl shared object" >&5 +echo "configure:3299: checking for libnsl shared object" >&5 shobj_name=libnsl shobj_path= case "$host" in @@ -2827,11 +3333,13 @@ fi echo $ac_n "checking for iconv""... $ac_c" 1>&6 -echo "configure:2831: checking for iconv" >&5 +echo "configure:3337: checking for iconv" >&5 +saved_CPPFLAGS=$CPPFLAGS saved_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ICONVINC" LIBS="$LIBS $ICONVLIB" cat > conftest.$ac_ext <<EOF -#line 2835 "configure" +#line 3343 "configure" #include "confdefs.h" #include <iconv.h> @@ -2843,7 +3351,7 @@ int main() { ; return 0; } EOF -if { (eval echo configure:2847: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* iconv_try_link=yes else @@ -2854,11 +3362,66 @@ else fi rm -f conftest* LIBS=$saved_LIBS +CPPFLAGS=$saved_CPPFLAGS echo "$ac_t""$iconv_try_link" 1>&6 if test "$iconv_try_link" = no ; then { echo "configure: error: iconv function not available" 1>&2; exit 1; } fi +echo $ac_n "checking for codeset name $utf8name""... $ac_c" 1>&6 +echo "configure:3373: checking for codeset name $utf8name" >&5 +saved_CPPFLAGS=$CPPFLAGS +saved_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ICONVINC" +LIBS="$LIBS $ICONVLIB" +if test "$cross_compiling" = yes; then + utf8_name_valid=unknown +else + cat > conftest.$ac_ext <<EOF +#line 3382 "configure" +#include "confdefs.h" + +#include <stddef.h> +#include <stdlib.h> +#include <iconv.h> +#define UTF8_NAME "$utf8name" +#define ICONV_FAIL ((iconv_t)(-1)) +/* Check if the codeset name UTF8_NAME is valid by performing iconv_open(). */ +int main() { + int i; + /* list of codeset names likely to exist */ + static char *codeset[] = { + "ASCII", "ISO-8859-1", "ISO8859-1", "iso8859_1", "8859-1", + "Shift_JIS", "SJIS", "sjis", NULL, + }; + + /* First try null conversion. */ + if (iconv_open(UTF8_NAME, UTF8_NAME) != ICONV_FAIL) return 0; + + /* Unfortunately, above check fails on certain systems, such as Solaris. */ + for (i = 0; codeset[i] != NULL; i++) { + if (iconv_open(UTF8_NAME, codeset[i]) != ICONV_FAIL) return 0; + } + return 1; +} + +EOF +if { (eval echo configure:3410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + utf8_name_valid=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + utf8_name_valid=no +fi +rm -fr conftest* +fi + +LIBS=$saved_LIBS +CPPFLAGS=$saved_CPPFLAGS +echo "$ac_t""$utf8_name_valid" 1>&6 + trap '' 1 2 15 cat > confcache <<\EOF @@ -3010,6 +3573,7 @@ s%@host_cpu@%$host_cpu%g s%@host_vendor@%$host_vendor%g s%@host_os@%$host_os%g s%@logdir@%$logdir%g +s%@ICONVINC@%$ICONVINC%g s%@ICONVLIB@%$ICONVLIB%g s%@ICONVSOFILE@%$ICONVSOFILE%g s%@CONF_PREFERENCE@%$CONF_PREFERENCE%g @@ -3031,6 +3595,7 @@ s%@LN_S@%$LN_S%g s%@LIBTOOL@%$LIBTOOL%g s%@CPP@%$CPP%g s%@LIBDL@%$LIBDL%g +s%@RUNMDN_SUBDIR@%$RUNMDN_SUBDIR%g CEOF EOF @@ -3261,3 +3826,23 @@ chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + + +if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then + echo + echo "NOTICE: runmdn command will not be built, since parameter type" + echo " list of gethostbyaddr() is unknown to configure." +fi +if test "$ac_cv_flavor_getnameinfo" = unknown ; then + echo + echo "NOTICE: runmdn command will not be built, since parameter type" + echo " list of getnameinfo() is unknown to configure." +fi +if test "$utf8_name_valid" = no ; then + echo + echo "WARNING: It seems that iconv does not accept codeset name $utf8name," + echo " which is supposed to refer to UTF-8 encoding." + echo " Please make sure it is indeed correct." +fi + + diff --git a/contrib/idn/mdnkit/configure.in b/contrib/idn/mdnkit/configure.in index b767c21d..ec4c02af 100644 --- a/contrib/idn/mdnkit/configure.in +++ b/contrib/idn/mdnkit/configure.in @@ -1,4 +1,4 @@ -dnl $Id: configure.in,v 1.47 2001/05/18 04:02:29 ishisone Exp $ +dnl $Id: configure.in,v 1.1 2002/01/02 02:46:23 marka Exp $ dnl Process this file with autoconf to produce a configure script. dnl dnl Copyright (c) 2000 Japan Network Information Center. All rights reserved. @@ -9,8 +9,8 @@ dnl LICENSE TERMS AND CONDITIONS dnl dnl The following License Terms and Conditions apply, unless a different dnl license is obtained from Japan Network Information Center ("JPNIC"), -dnl a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -dnl Tokyo, Japan. +dnl a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +dnl Chiyoda-ku, Tokyo 101-0047, Japan. dnl dnl 1. Use, Modification and Redistribution (including distribution of any dnl modified or derived work) in source and/or binary forms is permitted @@ -61,6 +61,16 @@ AC_INIT(include/mdn/converter.h) AC_CANONICAL_HOST +debug=no +AC_ARG_ENABLE(debug, +[ --enable-debug enable debug codes [default=no]], + debug=$enableval) +case "$enableval" in +yes) + CFLAGS="$CFLAGS -DDEBUG" + ;; +esac + logdir=no AC_ARG_WITH(logdir, [ --with-logdir=DIR mdnsproxy's log files are in DIR. @@ -98,6 +108,7 @@ AC_ARG_WITH(utf8, utf8name=$withval) case "$utf8name" in no) + utf8name=UTF-8 ;; yes) AC_MSG_ERROR([You must specify NAME to --with-utf8 option.]) @@ -117,12 +128,76 @@ AC_ACE_SIGNATURE(AltDUDE, [a---], []) AC_ACE_SIGNATURE(AMC-ACE-M, [], [-amc1]) AC_ACE_SIGNATURE(AMC-ACE-O, [], [-amc2]) AC_ACE_PREFIX(AMC-ACE-R, [amc3-]) +AC_ACE_PREFIX(AMC-ACE-V, [amc4-]) +AC_ACE_PREFIX(AMC-ACE-W, [amc5-]) +AC_ACE_PREFIX(AMC-ACE-Z, [zq--]) +AC_ACE_PREFIX(MACE, [mq--]) -iconv=no +ICONVINC= +ICONVLIB= + +libiconv=unspec +AC_ARG_WITH(libiconv, +[ --with-libiconv=IPREFIX GNU libiconv are installed in IPREFIX [PREFIX]], + libiconv=$withval) +case "$libiconv" in +unspec) + ;; +no) + ICONVINC= + ICONVLIB= + ;; +yes) + if test X$prefix = XNONE ; then + libiconv=$ac_default_prefix + else + libiconv=$prefix + fi + ICONVINC="-I$libiconv/include" + ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv" + ;; +*) + ICONVINC="-I$libiconv/include" + ICONVLIB="-L$libiconv/lib -R$libiconv/lib -liconv" + ;; +esac + +iconv_include=unspec +AC_ARG_WITH(iconv-include, +[ --with-iconv-include=DIR iconv include files are in DIR []], + iconv_include=$withval) +case "$iconv_include" in +unspec) + ;; +no) + ICONVINC= + ;; +yes) + AC_MSG_WARN([You must supply DIR to --with-iconv-include option. + Ignored.]) + ICONVINC= + ;; +*) + ICONVINC="-I$iconv_include" + ;; +esac + +if test "X$ICONVINC" != X ; then + iconv_include="`echo X$ICONVINC | sed -e 's/^X-I//'`" + if test ! -f "$iconv_include/iconv.h" ; then + AC_MSG_ERROR([iconv.h doesn't exist in $iconv_include]) + fi +fi + +AC_SUBST(ICONVINC) + +iconv=unspec AC_ARG_WITH(iconv, [ --with-iconv=LIB special library for iconv []], iconv=$withval) case "$iconv" in +unspec) + ;; no) ICONVLIB= ;; @@ -138,7 +213,7 @@ esac AC_SUBST(ICONVLIB) AC_ARG_WITH(iconv-sofile, -[ --with-iconv-sofile=PATH shared library file for libiconv []], +[ --with-iconv-sofile=PATH shared library file for libiconv []], iconv_file=$withval, iconv_file=guess) ICONVSOFILE= case "$iconv_file" in @@ -242,7 +317,17 @@ case "$host" in PRELOAD_VAR="_RLD_LIST" PRELOAD_LAST=":DEFAULT" ;; +*-netbsd*) + if test -x /usr/bin/file -a -x /usr/bin/grep ; then + case "`/usr/bin/file /usr/bin/grep`" in + *ELF*) + PRELOAD_SEP=" " + ;; + esac + fi + ;; esac + AC_SUBST(PRELOAD_VAR) AC_SUBST(PRELOAD_SEP) AC_SUBST(PRELOAD_LAST) @@ -257,6 +342,11 @@ AC_CHECK_HEADERS(unistd.h locale.h langinfo.h resolv.h) AC_CHECK_HEADERS(sys/select.h arpa/nameser.h) AC_CHECK_HEADERS(dlfcn.h) +saved_CPPFLAGS=$CPPFLAGS +CPPFLAGS="$CPPFLAGS $ICONVINC" +AC_CHECK_HEADER(iconv.h, , [AC_MSG_ERROR([iconv.h doesn't exist])]) +CPPFLAGS=$saved_CPPFLAGS + dnl Checks for data types. AC_TYPE_UID_T dnl for dnsproxy. @@ -268,7 +358,7 @@ AC_CHECK_LIB(nsl, inet_addr) AC_CHECK_LIB(dl, dlopen, [ LIBS="-ldl $LIBS" LIBDL="-ldl" - AC_DEFINE(HAVE_LIBDL, 1) + AC_DEFINE(HAVE_LIBDL, 1, [Define if you have the dl library (-ldl).]) AC_SUBST(LIBDL) ]) @@ -282,9 +372,27 @@ AC_CHECK_FUNCS(dlopen dlsym) dnl Checks the flavor of gethostbyaddr* functions. AC_CACHE_CHECK(flavor of gethostbyaddr, ac_cv_flavor_gethostbyaddr, -[AC_TRY_RUN( +[ac_cv_flavor_gethostbyaddr=unknown +AC_TRY_RUN( +[ +#include <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; @@ -293,15 +401,169 @@ int main() { (void)gethostbyaddr(NULL, 0, 0); return 0; } -], - ac_cv_flavor_gethostbyaddr=standard, - ac_cv_flavor_gethostbyaddr=traditional, - ac_cv_flavor_gethostbyaddr=traditional)]) -if test "$ac_cv_flavor_gethostbyaddr" = "standard"; then - AC_DEFINE(GHBA_ADDRLEN_T, size_t) -else - AC_DEFINE(GHBA_ADDRLEN_T, int) +], ac_cv_flavor_gethostbyaddr=glibc,, + ac_cv_flavor_gethostbyaddr=unknown) +AC_TRY_RUN( +[ +#include <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_WARN([runmdn command will not be built.]) + ;; +esac +AC_DEFINE_UNQUOTED(GHBA_ADDR_T, $ac_cv_type_ghba_addr_t, + [Define as the type of the 1st argument of gethostbyaddr.]) +AC_DEFINE_UNQUOTED(GHBA_ADDRLEN_T, $ac_cv_type_ghba_addrlen_t, + [Define as the type of the 2nd argument of gethostbyaddr.]) + +dnl Checks the flavor of getnameinfo functions. +AC_CACHE_CHECK(flavor of getnameinfo, ac_cv_flavor_getnameinfo, +[ac_cv_flavor_getnameinfo=unknown +AC_TRY_RUN( +[ +#include <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_WARN([runmdn command will not be built.]) + ;; +esac +AC_SUBST(RUNMDN_SUBDIR) +AC_DEFINE_UNQUOTED(GNI_SALEN_T, $ac_cv_type_gni_salen_t, + [Define as the type of the 2nd argument of getnameinfo.]) +AC_DEFINE_UNQUOTED(GNI_HOSTLEN_T, $ac_cv_type_gni_hostlen_t, + [Define as the type of the 4th argument of getnameinfo.]) +AC_DEFINE_UNQUOTED(GNI_SERVLEN_T, $ac_cv_type_gni_servlen_t, + [Define as the type of the 6th argument of getnameinfo.]) +AC_DEFINE_UNQUOTED(GNI_FLAGS_T, $ac_cv_type_gni_flags_t, + [Define as the type of the 7th argument of getnameinfo.]) + +dnl Check whether building runmdn or not. +RUNMDN_SUBDIR=runmdn +if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then + RUNMDN_SUBDIR= fi +if test "$ac_cv_flavor_getnameinfo" = unknown ; then + RUNMDN_SUBDIR= +fi +AC_SUBST(RUNMDN_SUBDIR) dnl Checks the flavor of gethost*_r functions. if test "$find_gethost_r" = yes; then @@ -309,8 +571,11 @@ if test "$find_gethost_r" = yes; then [AC_TRY_RUN( changequote(<<, >>)dnl << -#include <stdio.h> +#include <stddef.h> +#include <sys/types.h> +#include <sys/socket.h> #include <netdb.h> +#include <stdio.h> int main() { int err = 0; @@ -329,7 +594,8 @@ changequote([, ])dnl ac_cv_flavor_gethost_r=sun, ac_cv_flavor_gethost_r=sun)]) if test "$ac_cv_flavor_gethost_r" = "glibc"; then - AC_DEFINE(GETHOST_R_GLIBC_FLAVOR) + AC_DEFINE(GETHOST_R_GLIBC_FLAVOR, 1, + [Define if the prototype of gethost*_r is glibc flavor.]) fi fi @@ -339,7 +605,9 @@ AC_FIND_SYSTEM_SHOBJ(libnsl) dnl Checks for iconv library. AC_MSG_CHECKING(for iconv) +saved_CPPFLAGS=$CPPFLAGS saved_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ICONVINC" LIBS="$LIBS $ICONVLIB" AC_TRY_LINK([ #include <iconv.h> @@ -348,11 +616,47 @@ AC_TRY_LINK([ i = iconv_open("ISO-8859-1", "UTF-8"); ], [iconv_try_link=yes], [iconv_try_link=no]) LIBS=$saved_LIBS +CPPFLAGS=$saved_CPPFLAGS AC_MSG_RESULT($iconv_try_link) if test "$iconv_try_link" = no ; then AC_MSG_ERROR(iconv function not available) fi +dnl Check for codeset name for UTF-8. +AC_MSG_CHECKING([for codeset name $utf8name]) +saved_CPPFLAGS=$CPPFLAGS +saved_LIBS=$LIBS +CPPFLAGS="$CPPFLAGS $ICONVINC" +LIBS="$LIBS $ICONVLIB" +AC_TRY_RUN([ +#include <stddef.h> +#include <stdlib.h> +#include <iconv.h> +#define UTF8_NAME "$utf8name" +#define ICONV_FAIL ((iconv_t)(-1)) +/* Check if the codeset name UTF8_NAME is valid by performing iconv_open(). */ +int main() { + int i; + /* list of codeset names likely to exist */ + static char *codeset[] = { + "ASCII", "ISO-8859-1", "ISO8859-1", "iso8859_1", "8859-1", + "Shift_JIS", "SJIS", "sjis", NULL, + }; + + /* First try null conversion. */ + if (iconv_open(UTF8_NAME, UTF8_NAME) != ICONV_FAIL) return 0; + + /* Unfortunately, above check fails on certain systems, such as Solaris. */ + for (i = 0; codeset[i] != NULL; i++) { + if (iconv_open(UTF8_NAME, codeset[i]) != ICONV_FAIL) return 0; + } + return 1; +} +], utf8_name_valid=yes, utf8_name_valid=no, utf8_name_valid=unknown) +LIBS=$saved_LIBS +CPPFLAGS=$saved_CPPFLAGS +AC_MSG_RESULT($utf8_name_valid) + dnl Output. AC_CONFIG_HEADER(include/config.h) AC_OUTPUT( @@ -368,3 +672,21 @@ AC_OUTPUT( tools/runmdn/runmdn map/Makefile ) +AC_OUTPUT_COMMANDS([ +if test "$ac_cv_flavor_gethostbyaddr" = unknown ; then + echo + echo "NOTICE: runmdn command will not be built, since parameter type" + echo " list of gethostbyaddr() is unknown to configure." +fi +if test "$ac_cv_flavor_getnameinfo" = unknown ; then + echo + echo "NOTICE: runmdn command will not be built, since parameter type" + echo " list of getnameinfo() is unknown to configure." +fi +if test "$utf8_name_valid" = no ; then + echo + echo "WARNING: It seems that iconv does not accept codeset name $utf8name," + echo " which is supposed to refer to UTF-8 encoding." + echo " Please make sure it is indeed correct." +fi +]) diff --git a/contrib/idn/mdnkit/include/Makefile.in b/contrib/idn/mdnkit/include/Makefile.in index b0a953af..9dcf8426 100644 --- a/contrib/idn/mdnkit/include/Makefile.in +++ b/contrib/idn/mdnkit/include/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.2 2001/03/28 02:12:35 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:25 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/config.h.in b/contrib/idn/mdnkit/include/config.h.in index 2fb964eb..f8fd4795 100644 --- a/contrib/idn/mdnkit/include/config.h.in +++ b/contrib/idn/mdnkit/include/config.h.in @@ -1,5 +1,5 @@ /* include/config.h.in. Generated automatically from configure.in by autoheader. */ -/* $Id: config.h.in,v 1.30 2001/04/25 06:26:18 m-kasahr Exp $ */ +/* $Id: config.h.in,v 1.1 2002/01/02 02:46:25 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -70,12 +70,6 @@ /* Define as an appropriate type (ex. int) if your system doesn't have. */ #undef BOOL -/* Define if the prototype of gethost*_r is glibc flavor. */ -#undef GETHOST_R_GLIBC_FLAVOR - -/* Define as the type of the 2nd argument of gethostbyaddr. */ -#undef GHBA_ADDRLEN_T - /* Define if you have the bcopy function. */ #undef HAVE_BCOPY @@ -160,9 +154,6 @@ /* Define if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H -/* Define if you have the dl library (-ldl). */ -#undef HAVE_LIBDL - /* Define if you have the nsl library (-lnsl). */ #undef HAVE_LIBNSL @@ -211,6 +202,42 @@ /* Define if the prefix of AMC-ACE-R encoding differs from 'amc3-'. */ #undef MDN_AMCACER_PREFIX +/* Define if the prefix of AMC-ACE-V encoding differs from 'amc4-'. */ +#undef MDN_AMCACEV_PREFIX + +/* Define if the prefix of AMC-ACE-W encoding differs from 'amc5-'. */ +#undef MDN_AMCACEW_PREFIX + +/* Define if the prefix of AMC-ACE-Z encoding differs from 'zq--'. */ +#undef MDN_AMCACEZ_PREFIX + +/* Define if the prefix of MACE encoding differs from 'mq--'. */ +#undef MDN_MACE_PREFIX + +/* Define if you have the dl library (-ldl). */ +#undef HAVE_LIBDL + +/* Define as the type of the 1st argument of gethostbyaddr. */ +#undef GHBA_ADDR_T + +/* Define as the type of the 2nd argument of gethostbyaddr. */ +#undef GHBA_ADDRLEN_T + +/* Define as the type of the 2nd argument of getnameinfo. */ +#undef GNI_SALEN_T + +/* Define as the type of the 4th argument of getnameinfo. */ +#undef GNI_HOSTLEN_T + +/* Define as the type of the 6th argument of getnameinfo. */ +#undef GNI_SERVLEN_T + +/* Define as the type of the 7th argument of getnameinfo. */ +#undef GNI_FLAGS_T + +/* Define if the prototype of gethost*_r is glibc flavor. */ +#undef GETHOST_R_GLIBC_FLAVOR + /* Define as the pathname of the shared libc object if your system has one. */ #undef SOPATH_LIBC diff --git a/contrib/idn/mdnkit/include/config.h.win b/contrib/idn/mdnkit/include/config.h.win index 1e181415..b1ead9e3 100644 --- a/contrib/idn/mdnkit/include/config.h.win +++ b/contrib/idn/mdnkit/include/config.h.win @@ -1,4 +1,4 @@ -/* $Id: config.h.win,v 1.3 2000/08/07 08:20:40 ishisone Exp $ */ +/* $Id: config.h.win,v 1.1 2002/01/02 02:46:26 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/Makefile.in b/contrib/idn/mdnkit/include/mdn/Makefile.in index 0e1ab9f8..588bea12 100644 --- a/contrib/idn/mdnkit/include/mdn/Makefile.in +++ b/contrib/idn/mdnkit/include/mdn/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.21 2001/04/16 06:20:25 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:26 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -76,6 +76,9 @@ HDRS = \ amcacem.h \ amcaceo.h \ amcacer.h \ + amcacev.h \ + amcacew.h \ + amcacez.h \ api.h \ assert.h \ brace.h \ @@ -91,6 +94,7 @@ HDRS = \ localencoding.h \ log.h \ logmacro.h \ + mace.h \ mapper.h \ mapselector.h \ msgheader.h \ diff --git a/contrib/idn/mdnkit/include/mdn/ace.h b/contrib/idn/mdnkit/include/mdn/ace.h index 9d18e8c9..e9747a48 100644 --- a/contrib/idn/mdnkit/include/mdn/ace.h +++ b/contrib/idn/mdnkit/include/mdn/ace.h @@ -1,4 +1,4 @@ -/* $Id: ace.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: ace.h,v 1.1.2.1 2002/02/08 12:12:41 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/altdude.h b/contrib/idn/mdnkit/include/mdn/altdude.h index 9dd523a7..26432308 100644 --- a/contrib/idn/mdnkit/include/mdn/altdude.h +++ b/contrib/idn/mdnkit/include/mdn/altdude.h @@ -1,4 +1,4 @@ -/* $Id: altdude.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: altdude.h,v 1.1.2.1 2002/02/08 12:12:42 marka Exp $ */ /* * Copyright (c) 2000,2001 Japan Network Information Center. * All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/amcacem.h b/contrib/idn/mdnkit/include/mdn/amcacem.h index 828c41d1..913d48cf 100644 --- a/contrib/idn/mdnkit/include/mdn/amcacem.h +++ b/contrib/idn/mdnkit/include/mdn/amcacem.h @@ -1,4 +1,4 @@ -/* $Id: amcacem.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: amcacem.h,v 1.1.2.1 2002/02/08 12:12:43 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/amcaceo.h b/contrib/idn/mdnkit/include/mdn/amcaceo.h index 157888ec..9eddd8ec 100644 --- a/contrib/idn/mdnkit/include/mdn/amcaceo.h +++ b/contrib/idn/mdnkit/include/mdn/amcaceo.h @@ -1,4 +1,4 @@ -/* $Id: amcaceo.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: amcaceo.h,v 1.1.2.1 2002/02/08 12:12:44 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/amcacer.h b/contrib/idn/mdnkit/include/mdn/amcacer.h index b42b2965..23d8bd19 100644 --- a/contrib/idn/mdnkit/include/mdn/amcacer.h +++ b/contrib/idn/mdnkit/include/mdn/amcacer.h @@ -1,4 +1,4 @@ -/* $Id: amcacer.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: amcacer.h,v 1.1.2.1 2002/02/08 12:12:46 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -63,8 +63,8 @@ /* * AMC-ACE-R Converter. * - * See Internet Draft draft-ietf-idn-amc-ace-r-00.txt (but not yet - * published at the time of this writing) for details. + * See Internet Draft draft-ietf-idn-amc-ace-r-01.txt for details. + * Note that -01 has some imcompatible changes over -00 spec. */ #include <mdn/result.h> diff --git a/contrib/idn/mdnkit/include/mdn/amcacev.h b/contrib/idn/mdnkit/include/mdn/amcacev.h new file mode 100644 index 00000000..d5532e5f --- /dev/null +++ b/contrib/idn/mdnkit/include/mdn/amcacev.h @@ -0,0 +1,85 @@ +/* $Id: amcacev.h,v 1.1.2.1 2002/02/08 12:12:47 marka Exp $ */ +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef MDN_AMCACEV_H +#define MDN_AMCACEV_H 1 + +/* + * AMC-ACE-V Converter. + * + * See Internet Draft draft-ietf-idn-amc-ace-v-00.txt for details. + */ + +#include <mdn/result.h> +#include <mdn/converter.h> + +extern mdn_result_t +mdn__amcacev_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata); + +extern mdn_result_t +mdn__amcacev_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir); + +extern mdn_result_t +mdn__amcacev_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, const char *from, char *to, + size_t tolen); + +#endif /* MDN_AMCACEV_H */ diff --git a/contrib/idn/mdnkit/include/mdn/amcacew.h b/contrib/idn/mdnkit/include/mdn/amcacew.h new file mode 100644 index 00000000..f9e7aa23 --- /dev/null +++ b/contrib/idn/mdnkit/include/mdn/amcacew.h @@ -0,0 +1,85 @@ +/* $Id: amcacew.h,v 1.1.2.1 2002/02/08 12:12:48 marka Exp $ */ +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef MDN_AMCACEW_H +#define MDN_AMCACEW_H 1 + +/* + * AMC-ACE-W Converter. + * + * See Internet Draft draft-ietf-idn-amc-ace-w-00.txt for details. + */ + +#include <mdn/result.h> +#include <mdn/converter.h> + +extern mdn_result_t +mdn__amcacew_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata); + +extern mdn_result_t +mdn__amcacew_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir); + +extern mdn_result_t +mdn__amcacew_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, const char *from, char *to, + size_t tolen); + +#endif /* MDN_AMCACEW_H */ diff --git a/contrib/idn/mdnkit/include/mdn/amcacez.h b/contrib/idn/mdnkit/include/mdn/amcacez.h new file mode 100644 index 00000000..e6a8f39e --- /dev/null +++ b/contrib/idn/mdnkit/include/mdn/amcacez.h @@ -0,0 +1,86 @@ +/* $Id: amcacez.h,v 1.1.2.1 2002/02/08 12:12:49 marka Exp $ */ +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef MDN_AMCACEZ_H +#define MDN_AMCACEZ_H 1 + +/* + * AMC-ACE-Z (version 0.3.1) Converter. + * + * See Internet Draft draft-ietf-idn-amc-ace-z-01.txt + * for details. + */ + +#include <mdn/result.h> +#include <mdn/converter.h> + +extern mdn_result_t +mdn__amcacez_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata); + +extern mdn_result_t +mdn__amcacez_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir); + +extern mdn_result_t +mdn__amcacez_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, const char *from, char *to, + size_t tolen); + +#endif /* MDN_AMCACEZ_H */ diff --git a/contrib/idn/mdnkit/include/mdn/api.h b/contrib/idn/mdnkit/include/mdn/api.h index 4a6ee276..ab5ffc65 100644 --- a/contrib/idn/mdnkit/include/mdn/api.h +++ b/contrib/idn/mdnkit/include/mdn/api.h @@ -1,4 +1,4 @@ -/* $Id: api.h,v 1.1 2001/06/09 00:29:55 tale Exp $ */ +/* $Id: api.h,v 1.1.2.1 2002/02/08 12:12:51 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -83,7 +83,7 @@ */ #define MDN_ENCODE_APP \ (MDN_LOCALCONV|MDN_DELIMMAP|MDN_LOCALMAP|MDN_NAMEPREP|MDN_IDNCONV) -#define MDN_DECODE_APP (MDN_IDNCONV|MDN_LOCALCONV) +#define MDN_DECODE_APP (MDN_IDNCONV|MDN_NAMEPREP|MDN_LOCALCONV) /* * Initialize the whole library, and load configuration from the default @@ -175,7 +175,10 @@ mdn_encodename(int actions, const char *from, char *to, size_t tolen); * a bitwise-or of the following flags: * * MDN_IDNCONV -- perform IDN encoding to UTF-8 conversion (step 1) - * MDN_LOCALCONV -- perform UTF-8 to local encoding conversion (step 2) + * MDN_NAMEPREP -- perform NAMEPREP for verification (step 2) + * MDN_UNASCHECK -- perform optional unassigned codepoint check for + * verification (also step 2) + * MDN_LOCALCONV -- perform UTF-8 to local encoding conversion (step 3) * * Note that if no flags are specified, 'mdn_decodename' does nothing * but copying the given name verbatim. @@ -215,6 +218,8 @@ mdn_decodename(int actions, const char *from, char *to, size_t tolen); mdn_decodename(MDN_IDNCONV, from, to, tolen) #define mdn_utf8tolocal(from, to, tolen) \ mdn_decodename(MDN_LOCALCONV, from, to, tolen) +#define mdn_nameprepcheck(from, to, tolen) \ + mdn_decodename(MDN_NAMEPREP, from, to, tolen) #define mdn_localtoidn(from, to, tolen) \ mdn_encodename(MDN_ENCODE_APP, from, to, tolen) diff --git a/contrib/idn/mdnkit/include/mdn/assert.h b/contrib/idn/mdnkit/include/mdn/assert.h index 6463f166..656643e2 100644 --- a/contrib/idn/mdnkit/include/mdn/assert.h +++ b/contrib/idn/mdnkit/include/mdn/assert.h @@ -1,4 +1,4 @@ -/* $Id: assert.h,v 1.5 2000/07/04 03:52:31 ishisone Exp $ */ +/* $Id: assert.h,v 1.1 2002/01/02 02:46:29 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/brace.h b/contrib/idn/mdnkit/include/mdn/brace.h index f562e8e1..dac7a7f8 100644 --- a/contrib/idn/mdnkit/include/mdn/brace.h +++ b/contrib/idn/mdnkit/include/mdn/brace.h @@ -1,4 +1,4 @@ -/* $Id: brace.h,v 1.2 2001/02/26 09:32:25 m-kasahr Exp $ */ +/* $Id: brace.h,v 1.1 2002/01/02 02:46:29 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/checker.h b/contrib/idn/mdnkit/include/mdn/checker.h index 0efb4361..5e92da74 100644 --- a/contrib/idn/mdnkit/include/mdn/checker.h +++ b/contrib/idn/mdnkit/include/mdn/checker.h @@ -1,4 +1,4 @@ -/* $Id: checker.h,v 1.1 2001/06/09 00:29:56 tale Exp $ */ +/* $Id: checker.h,v 1.1.2.1 2002/02/08 12:12:54 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/converter.h b/contrib/idn/mdnkit/include/mdn/converter.h index 6d629245..9d777de3 100644 --- a/contrib/idn/mdnkit/include/mdn/converter.h +++ b/contrib/idn/mdnkit/include/mdn/converter.h @@ -1,4 +1,4 @@ -/* $Id: converter.h,v 1.15 2001/02/26 09:32:25 m-kasahr Exp $ */ +/* $Id: converter.h,v 1.1 2002/01/02 02:46:30 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -89,6 +89,13 @@ typedef enum { #define MDN_CONVERTER_RTCHECK 2 /* + * Encoding types. + */ +#define MDN_NONACE 0 +#define MDN_ACE_STRICTCASE 1 +#define MDN_ACE_LOOSECASE 2 + +/* * Initialize module. Must be called before any other calls of * the functions of this module. * @@ -167,13 +174,23 @@ extern char * mdn_converter_localencoding(mdn_converter_t ctx); /* - * Return if this local encoding is a special one that a string in this - * encoding just looks like an ordinary ASCII string. - * A few types of encoding designed specially for domain name conversion - * (such as UTF-5) fall into this category. + * Return the encoding type of this local encoding. + * + * Returns: + * MDN_NOACE -- encoding is not ACE. + * MDN_ACE_STRICTCASE -- encoding is ACE. + * decoder of this ACE preserve letter case. + * MDN_ACE_LOOSECASE -- encoding type is ACE. + * decoder cannot preserve letter case. + */ +extern int +mdn_converter_encodingtype(mdn_converter_t ctx); + +/* + * Return if this local encoding is ACE (Ascii Compatible Encoding). * * Returns: - * 1 -- yes, it is special. + * 1 -- yes, it is ACE. * 0 -- no. */ extern int @@ -229,8 +246,7 @@ typedef mdn_result_t (*mdn_converter_convertproc_t)(mdn_converter_t ctx, /* * Register a new converter. - * 'ascii_compatible' is a boolean flag indicating this encoding is - * an `ascii-compatible encoding'. + * 'encoding_type' is a value which mdn_converter_encodingtype() returns. * * Returns: * mdn_success -- ok. @@ -241,6 +257,6 @@ mdn_converter_register(const char *name, mdn_converter_openproc_t open, mdn_converter_closeproc_t close, mdn_converter_convertproc_t convert, - int ascii_compatible); + int encoding_type); #endif /* MDN_CONVERTER_H */ diff --git a/contrib/idn/mdnkit/include/mdn/debug.h b/contrib/idn/mdnkit/include/mdn/debug.h index e043179b..27469bc1 100644 --- a/contrib/idn/mdnkit/include/mdn/debug.h +++ b/contrib/idn/mdnkit/include/mdn/debug.h @@ -1,4 +1,4 @@ -/* $Id: debug.h,v 1.7 2000/07/04 03:52:32 ishisone Exp $ */ +/* $Id: debug.h,v 1.1 2002/01/02 02:46:30 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/delimitermap.h b/contrib/idn/mdnkit/include/mdn/delimitermap.h index 9fef7611..7082790f 100644 --- a/contrib/idn/mdnkit/include/mdn/delimitermap.h +++ b/contrib/idn/mdnkit/include/mdn/delimitermap.h @@ -1,4 +1,4 @@ -/* $Id: delimitermap.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */ +/* $Id: delimitermap.h,v 1.1.2.1 2002/02/08 12:12:58 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/dn.h b/contrib/idn/mdnkit/include/mdn/dn.h index b275b50b..1b3df48a 100644 --- a/contrib/idn/mdnkit/include/mdn/dn.h +++ b/contrib/idn/mdnkit/include/mdn/dn.h @@ -1,4 +1,4 @@ -/* $Id: dn.h,v 1.7 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: dn.h,v 1.1 2002/01/02 02:46:30 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/dude.h b/contrib/idn/mdnkit/include/mdn/dude.h index aaa4aeb5..53b3f68b 100644 --- a/contrib/idn/mdnkit/include/mdn/dude.h +++ b/contrib/idn/mdnkit/include/mdn/dude.h @@ -1,4 +1,4 @@ -/* $Id: dude.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */ +/* $Id: dude.h,v 1.1.2.1 2002/02/08 12:13:00 marka Exp $ */ /* * Copyright (c) 2000,2001 Japan Network Information Center. * All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -64,9 +64,9 @@ /* * DUDE Converter. * - * See Internet Draft draft-ietf-idn-dude-01.txt for details. Note + * See Internet Draft draft-ietf-idn-dude-02.txt for details. Note * that this implementation does not support the optional feature of - * DUDE, which is "case preservation". Implementing this feature + * DUDE, which is "Mixed-case annotation". Implementing this feature * requires reimplementation of NAMEPREP process of libmdn. */ diff --git a/contrib/idn/mdnkit/include/mdn/filechecker.h b/contrib/idn/mdnkit/include/mdn/filechecker.h index 653c6aa7..c3a872aa 100644 --- a/contrib/idn/mdnkit/include/mdn/filechecker.h +++ b/contrib/idn/mdnkit/include/mdn/filechecker.h @@ -1,4 +1,4 @@ -/* $Id: filechecker.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */ +/* $Id: filechecker.h,v 1.1.2.1 2002/02/08 12:13:01 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/filemapper.h b/contrib/idn/mdnkit/include/mdn/filemapper.h index 045d1918..58c9635a 100644 --- a/contrib/idn/mdnkit/include/mdn/filemapper.h +++ b/contrib/idn/mdnkit/include/mdn/filemapper.h @@ -1,4 +1,4 @@ -/* $Id: filemapper.h,v 1.1 2001/06/09 00:29:58 tale Exp $ */ +/* $Id: filemapper.h,v 1.1.2.1 2002/02/08 12:13:02 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/lace.h b/contrib/idn/mdnkit/include/mdn/lace.h index 8f2a5614..29f0e6ec 100644 --- a/contrib/idn/mdnkit/include/mdn/lace.h +++ b/contrib/idn/mdnkit/include/mdn/lace.h @@ -1,4 +1,4 @@ -/* $Id: lace.h,v 1.2 2001/02/26 09:32:25 m-kasahr Exp $ */ +/* $Id: lace.h,v 1.1 2002/01/02 02:46:31 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/localencoding.h b/contrib/idn/mdnkit/include/mdn/localencoding.h index 3cefe481..5e3d50a7 100644 --- a/contrib/idn/mdnkit/include/mdn/localencoding.h +++ b/contrib/idn/mdnkit/include/mdn/localencoding.h @@ -1,4 +1,4 @@ -/* $Id: localencoding.h,v 1.7 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: localencoding.h,v 1.1 2002/01/02 02:46:31 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/log.h b/contrib/idn/mdnkit/include/mdn/log.h index 2360fcc9..53f232e9 100644 --- a/contrib/idn/mdnkit/include/mdn/log.h +++ b/contrib/idn/mdnkit/include/mdn/log.h @@ -1,4 +1,4 @@ -/* $Id: log.h,v 1.9 2000/10/16 05:00:17 ishisone Exp $ */ +/* $Id: log.h,v 1.1 2002/01/02 02:46:31 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/logmacro.h b/contrib/idn/mdnkit/include/mdn/logmacro.h index df4385ef..9d862afd 100644 --- a/contrib/idn/mdnkit/include/mdn/logmacro.h +++ b/contrib/idn/mdnkit/include/mdn/logmacro.h @@ -1,4 +1,4 @@ -/* $Id: logmacro.h,v 1.9 2000/09/20 02:47:29 ishisone Exp $ */ +/* $Id: logmacro.h,v 1.1 2002/01/02 02:46:32 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -65,16 +65,16 @@ #define FATAL(x) mdn_log_fatal x #define ERROR(x) mdn_log_error x #define WARNING(x) mdn_log_warning x -#define INFO(x) mdn_log_info x +#define INFO(x) LOG_AT_LEVEL(mdn_log_level_info, mdn_log_info, x) +#define TRACE(x) LOG_AT_LEVEL(mdn_log_level_trace, mdn_log_trace, x) #ifdef DEBUG -#define TRACE(x) mdn_log_trace x -#define DUMP(x) mdn_log_dump x +#define DUMP(x) LOG_AT_LEVEL(mdn_log_level_dump, mdn_log_dump, x) #else -#define TRACE(x) #define DUMP(x) #endif /* DEBUG */ +#define LOG_AT_LEVEL(lv, fun, x) do {if (LOGLEVEL >= (lv)) fun x; } while (0) #define LOGLEVEL mdn_log_getlevel() #endif /* MDN_LOGMACRO_H */ diff --git a/contrib/idn/mdnkit/include/mdn/mace.h b/contrib/idn/mdnkit/include/mdn/mace.h new file mode 100644 index 00000000..b1ae331c --- /dev/null +++ b/contrib/idn/mdnkit/include/mdn/mace.h @@ -0,0 +1,86 @@ +/* $Id: mace.h,v 1.1.2.1 2002/02/08 12:13:09 marka Exp $ */ +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef MDN_MACE_H +#define MDN_MACE_H 1 + +/* + * MACE Converter. + * + * See Internet Draft draft-ietf-idn-mace-00.txt (but not yet + * published at the time of this writing) for details. + */ + +#include <mdn/result.h> +#include <mdn/converter.h> + +extern mdn_result_t +mdn__mace_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata); + +extern mdn_result_t +mdn__mace_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir); + +extern mdn_result_t +mdn__mace_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, const char *from, char *to, + size_t tolen); + +#endif /* MDN_MACE_H */ diff --git a/contrib/idn/mdnkit/include/mdn/mapper.h b/contrib/idn/mdnkit/include/mdn/mapper.h index 16506b4d..c88c76c8 100644 --- a/contrib/idn/mdnkit/include/mdn/mapper.h +++ b/contrib/idn/mdnkit/include/mdn/mapper.h @@ -1,4 +1,4 @@ -/* $Id: mapper.h,v 1.1 2001/06/09 00:29:59 tale Exp $ */ +/* $Id: mapper.h,v 1.1.2.1 2002/02/08 12:13:10 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/mapselector.h b/contrib/idn/mdnkit/include/mdn/mapselector.h index fc3e032b..70be085b 100644 --- a/contrib/idn/mdnkit/include/mdn/mapselector.h +++ b/contrib/idn/mdnkit/include/mdn/mapselector.h @@ -1,4 +1,4 @@ -/* $Id: mapselector.h,v 1.1 2001/06/09 00:29:59 tale Exp $ */ +/* $Id: mapselector.h,v 1.1.2.1 2002/02/08 12:13:11 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/msgheader.h b/contrib/idn/mdnkit/include/mdn/msgheader.h index 11359700..8b6c8cab 100644 --- a/contrib/idn/mdnkit/include/mdn/msgheader.h +++ b/contrib/idn/mdnkit/include/mdn/msgheader.h @@ -1,4 +1,4 @@ -/* $Id: msgheader.h,v 1.7 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: msgheader.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/msgtrans.h b/contrib/idn/mdnkit/include/mdn/msgtrans.h index 7f5167e7..76370715 100644 --- a/contrib/idn/mdnkit/include/mdn/msgtrans.h +++ b/contrib/idn/mdnkit/include/mdn/msgtrans.h @@ -1,4 +1,4 @@ -/* $Id: msgtrans.h,v 1.12 2001/02/15 01:15:25 ishisone Exp $ */ +/* $Id: msgtrans.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */ /* * Copyright (c) 2000,2001 Japan Network Information Center. * All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/nameprep.h b/contrib/idn/mdnkit/include/mdn/nameprep.h index 53f3961f..f50c7799 100644 --- a/contrib/idn/mdnkit/include/mdn/nameprep.h +++ b/contrib/idn/mdnkit/include/mdn/nameprep.h @@ -1,4 +1,4 @@ -/* $Id: nameprep.h,v 1.1 2001/06/09 00:30:00 tale Exp $ */ +/* $Id: nameprep.h,v 1.1.2.1 2002/02/08 12:13:15 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/normalizer.h b/contrib/idn/mdnkit/include/mdn/normalizer.h index c1b7f80c..6ac8c36a 100644 --- a/contrib/idn/mdnkit/include/mdn/normalizer.h +++ b/contrib/idn/mdnkit/include/mdn/normalizer.h @@ -1,4 +1,4 @@ -/* $Id: normalizer.h,v 1.13 2001/02/23 10:36:51 m-kasahr Exp $ */ +/* $Id: normalizer.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/race.h b/contrib/idn/mdnkit/include/mdn/race.h index cb885ff6..2fa679a7 100644 --- a/contrib/idn/mdnkit/include/mdn/race.h +++ b/contrib/idn/mdnkit/include/mdn/race.h @@ -1,4 +1,4 @@ -/* $Id: race.h,v 1.9 2001/02/26 09:32:25 m-kasahr Exp $ */ +/* $Id: race.h,v 1.1 2002/01/02 02:46:33 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/res.h b/contrib/idn/mdnkit/include/mdn/res.h index 4d47505a..986def00 100644 --- a/contrib/idn/mdnkit/include/mdn/res.h +++ b/contrib/idn/mdnkit/include/mdn/res.h @@ -1,4 +1,4 @@ -/* $Id: res.h,v 1.7 2001/04/11 08:16:07 m-kasahr Exp $ */ +/* $Id: res.h,v 1.1 2002/01/02 02:46:34 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -80,9 +80,9 @@ * Convert and check the string. * * This function converts the string `from' to `to', checks `from' or - * combination of them, using `actions'. + * combination of them, using `insn'. * - * `actions' is a sequence of characters as follows: + * `insn' is a sequence of characters as follows: * * l convert the local codeset string to UTF-8. * L convert the UTF-8 string to the local codeset. @@ -97,28 +97,33 @@ * codepoint. * I convert the UTF-8 string to ACE. * i convert the ACE string to UTF-8. - * a convert the alternative encoded ACE sting to UTF-8. - * A convert the UTF-8 string to alternative ACE encoding. + * !m inspect if nameprep mapping has been performed to the + * string. If hasn't, convert the string to ACE. + * !n inspect if nameprep normalizaion has been performed + * to the string. If hasn't, convert the string to ACE. + * !p search the string for nameprep prohibited character. + * If found, convert the string to ACE. + * !N equivalent to "!m!n!p". + * !u search the string for nameprep unassigned codepoint. + * If found, convert the string to ACE. * * Returns: * mdn_success -- ok. * mdn_buffer_overflow -- output buffer is too small. * mdn_invalid_encoding -- input string has invalid byte sequence. * mdn_invalid_name -- local encoding (codeset) name is invalid. - * mdn_invalid_action -- `actions' contains invalid action. + * mdn_invalid_action -- `insn' contains invalid action. * mdn_invalid_nomemory -- out of memory. * mdn_invalid_nomapping -- no mapping to output codeset. * mdn_prohibited -- input string has a prohibited character. - * mdn_failuer -- other failure. + * mdn_failure -- other failure. */ extern mdn_result_t -mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, +mdn_res_nameconv(mdn_resconf_t ctx, const char *insn, const char *from, char *to, size_t tolen); /* * Convert the local codeset string to UTF-8. - * equivalent to: - * mdn_res_nameconv(ctx, "l", from, to, tolen); */ extern mdn_result_t mdn_res_localtoucs(mdn_resconf_t ctx, const char *from, char *to, @@ -129,8 +134,6 @@ mdn_res_localtoucs(mdn_resconf_t ctx, const char *from, char *to, /* * Convert the UTF-8 string to the local codeset. - * equivalent to: - * mdn_res_nameconv(ctx, "L", from, to, tolen); */ extern mdn_result_t mdn_res_ucstolocal(mdn_resconf_t ctx, const char *from, char *to, @@ -141,8 +144,6 @@ mdn_res_ucstolocal(mdn_resconf_t ctx, const char *from, char *to, /* * Perform the nameprep mapping. - * equivalent to: - * mdn_res_nameconv(ctx, "m", from, to, tolen); */ extern mdn_result_t mdn_res_map(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); @@ -152,8 +153,6 @@ mdn_res_map(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); /* * Perform nameprep normalization. - * equivalent to: - * mdn_res_nameconv(ctx, "n", from, to, tolen); */ extern mdn_result_t mdn_res_normalize(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); @@ -163,8 +162,6 @@ mdn_res_normalize(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); /* * Check whether the string contains nameprep prohibited character. - * equivalent to: - * mdn_res_nameconv(ctx, "p", from, to, tolen); */ extern mdn_result_t mdn_res_prohibitcheck(mdn_resconf_t ctx, const char *from, char *to, @@ -174,9 +171,27 @@ mdn_res_prohibitcheck(mdn_resconf_t ctx, const char *from, char *to, mdn_res_nameconv(ctx, "p", from, to, tolen) /* + * NAMEPREP. + */ +extern mdn_result_t +mdn_res_nameprep(mdn_resconf_t ctx, const char *from, char *to, + size_t tolen); + +#define mdn_res_nameprep(ctx, from, to, tolen) \ + mdn_res_nameconv(ctx, "N", from, to, tolen) + +/* + * NAMEPREP check. + */ +extern mdn_result_t +mdn_res_nameprepcheck(mdn_resconf_t ctx, const char *from, char *to, + size_t tolen); + +#define mdn_res_nameprepcheck(ctx, from, to, tolen) \ + mdn_res_nameconv(ctx, "!N", from, to, tolen) + +/* * Check whether the string contains nameprep unassigned character. - * equivalent to: - * mdn_res_nameconv(ctx, "u", from, to, tolen); */ extern mdn_result_t mdn_res_unassignedcheck(mdn_resconf_t ctx, const char *from, char *to, @@ -187,8 +202,6 @@ mdn_res_unassignedcheck(mdn_resconf_t ctx, const char *from, char *to, /* * Perform local delimiter mapping. - * equivalent to: - * mdn_res_nameconv(ctx, "d", from, to, tolen); */ extern mdn_result_t mdn_res_delimitermap(mdn_resconf_t ctx, const char *from, char *to, @@ -199,8 +212,6 @@ mdn_res_delimitermap(mdn_resconf_t ctx, const char *from, char *to, /* * Perfrom TLD based local mapping. - * equivalent to: - * mdn_res_nameconv(ctx, "M", from, to, tolen); */ extern mdn_result_t mdn_res_localmap(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); @@ -210,8 +221,6 @@ mdn_res_localmap(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); /* * Convert the UTF-8 string to ACE. - * equivalent to: - * mdn_res_nameconv(ctx, "I", from, to, tolen); */ extern mdn_result_t mdn_res_ucstodns(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); @@ -221,8 +230,6 @@ mdn_res_ucstodns(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); /* * Convert the ACE string to UTF-8. - * equivalent to: - * mdn_res_nameconv(ctx, "i", from, to, tolen); */ extern mdn_result_t mdn_res_dnstoucs(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); diff --git a/contrib/idn/mdnkit/include/mdn/resconf.h b/contrib/idn/mdnkit/include/mdn/resconf.h index c737c435..9a2c2f33 100644 --- a/contrib/idn/mdnkit/include/mdn/resconf.h +++ b/contrib/idn/mdnkit/include/mdn/resconf.h @@ -1,4 +1,4 @@ -/* $Id: resconf.h,v 1.12 2001/04/16 02:25:17 m-kasahr Exp $ */ +/* $Id: resconf.h,v 1.1 2002/01/02 02:46:34 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -145,87 +145,56 @@ extern char * mdn_resconf_defaultfile(void); /* - * Get/Set codeset converters. - * - * + for local encoding, - * + for IDN encoding, - * + for alternate encoding (which is used when the string to be converterd - * to the local encoding has some characters having no mapping to the - * local encoding) - * In case of error, NULL will be returned. + * Get an object of lower module that `ctx' holds. */ - -extern mdn_converter_t -mdn_resconf_getlocalconverter(mdn_resconf_t ctx); +extern mdn_delimitermap_t +mdn_resconf_getdelimitermap(mdn_resconf_t ctx); extern mdn_converter_t mdn_resconf_getidnconverter(mdn_resconf_t ctx); extern mdn_converter_t -mdn_resconf_getalternateconverter(mdn_resconf_t ctx); +mdn_resconf_getlocalconverter(mdn_resconf_t ctx); -extern void -mdn_resconf_setlocalconverter(mdn_resconf_t ctx, - mdn_converter_t local_converter); -extern void -mdn_resconf_setidnconverter(mdn_resconf_t ctx, - mdn_converter_t idn_coverter); +extern mdn_mapselector_t +mdn_resconf_getlocalmapselector(mdn_resconf_t ctx); -extern void -mdn_resconf_setalternateconverter(mdn_resconf_t ctx, - mdn_converter_t alternate_converter); +extern mdn_mapper_t +mdn_resconf_getmapper(mdn_resconf_t ctx); -/* - * Get/Set domain name normalizer. - * - * In case of error, NULL will be returned. - */ extern mdn_normalizer_t mdn_resconf_getnormalizer(mdn_resconf_t ctx); -extern void -mdn_resconf_setnormalizer(mdn_resconf_t ctx, mdn_normalizer_t normalizer); +extern mdn_checker_t +mdn_resconf_getprohibitchecker(mdn_resconf_t ctx); + +extern mdn_checker_t +mdn_resconf_getunassignedchecker(mdn_resconf_t ctx); /* - * Get/Set domain name mapper. - * - * + for nameprep mapping. - * + for TLD based local mapping. - * + for local delimiter mapping. - * In case of error, NULL will be returned. + * Set an object of lower module to `ctx'. */ -extern mdn_mapper_t -mdn_resconf_getmapper(mdn_resconf_t ctx); - -extern mdn_delimitermap_t -mdn_resconf_getdelimitermap(mdn_resconf_t ctx); - -extern mdn_mapselector_t -mdn_resconf_getlocalmapselector(mdn_resconf_t ctx); +extern void +mdn_resconf_setdelimitermap(mdn_resconf_t ctx, + mdn_delimitermap_t delimiter_mapper); extern void -mdn_resconf_setmapper(mdn_resconf_t ctx, mdn_mapper_t mapper); +mdn_resconf_setidnconverter(mdn_resconf_t ctx, + mdn_converter_t idn_coverter); extern void -mdn_resconf_setdelimitermap(mdn_resconf_t ctx, - mdn_delimitermap_t delimiter_mapper); +mdn_resconf_setlocalconverter(mdn_resconf_t ctx, + mdn_converter_t local_converter); extern void mdn_resconf_setlocalmapselector(mdn_resconf_t ctx, mdn_mapselector_t map_selector); -/* - * Get domain name checker. - * - * + for prohibited character checking. - * + for unassigned character checking. - * In case of error, NULL will be returned. - */ -extern mdn_checker_t -mdn_resconf_getprohibitchecker(mdn_resconf_t ctx); +extern void +mdn_resconf_setmapper(mdn_resconf_t ctx, mdn_mapper_t mapper); -extern mdn_checker_t -mdn_resconf_getunassignedchecker(mdn_resconf_t ctx); +extern void +mdn_resconf_setnormalizer(mdn_resconf_t ctx, mdn_normalizer_t normalizer); extern void mdn_resconf_setprohibitchecker(mdn_resconf_t ctx, @@ -236,27 +205,18 @@ mdn_resconf_setunassignedchecker(mdn_resconf_t ctx, mdn_checker_t unassigned_checker); /* - * Set mapper, normalizer, prohibit checker and unassigned checker in - * the resconf context to the specified NAMEPREP version. - */ -extern mdn_result_t -mdn_resconf_setalternateconvertername(mdn_resconf_t ctx, const char *name, - int flags); - -/* - * Set converter, delimitermap, mapper, mapselector, normalizer, checker - * by name. + * Set name or add names to an object of lower module that `ctx' holds. */ extern mdn_result_t mdn_resconf_setidnconvertername(mdn_resconf_t ctx, const char *name, int flags); extern mdn_result_t -mdn_resconf_setlocalconvertername(mdn_resconf_t ctx, const char *name, - int flags); +mdn_resconf_addalldelimitermapucs(mdn_resconf_t ctx, unsigned long *v, int nv); extern mdn_result_t -mdn_resconf_addalldelimitermapucs(mdn_resconf_t ctx, unsigned long *v, int nv); +mdn_resconf_setlocalconvertername(mdn_resconf_t ctx, const char *name, + int flags); extern mdn_result_t mdn_resconf_addalllocalmapselectornames(mdn_resconf_t ctx, const char *tld, @@ -282,6 +242,22 @@ extern mdn_result_t mdn_resconf_setnameprepversion(mdn_resconf_t ctx, const char *version); /* + * These macros are provided for backward compatibility to mDNkit 2.1 + * and older. + */ +extern void +mdn_resconf_setalternateconverter(mdn_resconf_t ctx, + mdn_converter_t alternate_converter); + +extern mdn_result_t +mdn_resconf_setalternateconvertername(mdn_resconf_t ctx, const char *name, + int flags); + +extern mdn_converter_t +mdn_resconf_getalternateconverter(mdn_resconf_t ctx); + + +/* * These macros are provided for backward compatibility to mDNkit 1.x. */ #define mdn_resconf_localconverter(ctx) \ diff --git a/contrib/idn/mdnkit/include/mdn/result.h b/contrib/idn/mdnkit/include/mdn/result.h index 9015199d..036512f8 100644 --- a/contrib/idn/mdnkit/include/mdn/result.h +++ b/contrib/idn/mdnkit/include/mdn/result.h @@ -1,4 +1,4 @@ -/* $Id: result.h,v 1.11 2001/02/05 09:10:56 ishisone Exp $ */ +/* $Id: result.h,v 1.1 2002/01/02 02:46:34 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/selectiveencode.h b/contrib/idn/mdnkit/include/mdn/selectiveencode.h index 47b4efd5..784ebfa7 100644 --- a/contrib/idn/mdnkit/include/mdn/selectiveencode.h +++ b/contrib/idn/mdnkit/include/mdn/selectiveencode.h @@ -1,4 +1,4 @@ -/* $Id: selectiveencode.h,v 1.8 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: selectiveencode.h,v 1.1 2002/01/02 02:46:35 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/strhash.h b/contrib/idn/mdnkit/include/mdn/strhash.h index 3fd7ef8e..2c7ad08a 100644 --- a/contrib/idn/mdnkit/include/mdn/strhash.h +++ b/contrib/idn/mdnkit/include/mdn/strhash.h @@ -1,4 +1,4 @@ -/* $Id: strhash.h,v 1.9 2000/08/02 02:06:40 ishisone Exp $ */ +/* $Id: strhash.h,v 1.1 2002/01/02 02:46:35 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/ucsmap.h b/contrib/idn/mdnkit/include/mdn/ucsmap.h index 6927a8dd..3ca7d5fe 100644 --- a/contrib/idn/mdnkit/include/mdn/ucsmap.h +++ b/contrib/idn/mdnkit/include/mdn/ucsmap.h @@ -1,4 +1,4 @@ -/* $Id: ucsmap.h,v 1.1 2001/06/09 00:30:06 tale Exp $ */ +/* $Id: ucsmap.h,v 1.1.2.1 2002/02/08 12:13:24 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/ucsset.h b/contrib/idn/mdnkit/include/mdn/ucsset.h index 548b66c0..e4344d7f 100644 --- a/contrib/idn/mdnkit/include/mdn/ucsset.h +++ b/contrib/idn/mdnkit/include/mdn/ucsset.h @@ -1,4 +1,4 @@ -/* $Id: ucsset.h,v 1.1 2001/06/09 00:30:06 tale Exp $ */ +/* $Id: ucsset.h,v 1.1.2.1 2002/02/08 12:13:26 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/unicode.h b/contrib/idn/mdnkit/include/mdn/unicode.h index 7d7cc88d..b3a2b040 100644 --- a/contrib/idn/mdnkit/include/mdn/unicode.h +++ b/contrib/idn/mdnkit/include/mdn/unicode.h @@ -1,6 +1,7 @@ -/* $Id: unicode.h,v 1.10 2001/02/13 08:26:22 ishisone Exp $ */ +/* $Id: unicode.h,v 1.1 2002/01/02 02:46:35 marka Exp $ */ /* - * Copyright (c) 2000 Japan Network Information Center. All rights reserved. + * Copyright (c) 2000,2001 Japan Network Information Center. + * All rights reserved. * * By using this file, you agree to the terms and conditions set forth bellow. * @@ -8,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -73,6 +74,11 @@ #include <mdn/result.h> /* + * A Handle for Unicode versions. + */ +typedef struct mdn__unicode_ops *mdn__unicode_version_t; + +/* * Context information for case conversion. */ typedef enum { @@ -82,13 +88,33 @@ typedef enum { } mdn__unicode_context_t; /* + * Create a handle for a specific Unicode version. + * The version number (such as "3.0.1") is specified by 'version' parameter. + * If it is NULL, the latest version is used. + * The handle is stored in '*versionp', which is used various functions + * in this and unormalize modules. + * + * Returns: + * mdn_success -- ok. + * mdn_notfound -- specified version not found. + */ +extern mdn_result_t +mdn__unicode_create(const char *version, mdn__unicode_version_t *versionp); + +/* + * Close a handle which was created by 'mdn__unicode_create'. + */ +extern void +mdn__unicode_destroy(mdn__unicode_version_t version); + +/* * Get canonical class. * * For characters out of unicode range (i.e. above 0xffff), 0 will * be returned. */ extern int -mdn__unicode_canonicalclass(unsigned long c); +mdn__unicode_canonicalclass(mdn__unicode_version_t version, unsigned long c); /* * Decompose a character. @@ -109,7 +135,8 @@ mdn__unicode_canonicalclass(unsigned long c); * mdn_buffer_overflow -- 'vlen' is too small. */ extern mdn_result_t -mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, +mdn__unicode_decompose(mdn__unicode_version_t version, + int compat, unsigned long *v, size_t vlen, unsigned long c, int *decomp_lenp); /* @@ -126,7 +153,8 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, * mdn_notfound -- no composition possible. */ extern mdn_result_t -mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp); +mdn__unicode_compose(mdn__unicode_version_t version, + unsigned long c1, unsigned long c2, unsigned long *compp); /* * Returns if there may be a canonical composition sequence which starts @@ -138,7 +166,8 @@ mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp); * 0 -- no, there is definitely no such sequences. */ extern int -mdn__unicode_iscompositecandidate(unsigned long c); +mdn__unicode_iscompositecandidate(mdn__unicode_version_t version, + unsigned long c); /* * Translate lowercase character to uppercase, and vice versa, according @@ -166,10 +195,12 @@ mdn__unicode_iscompositecandidate(unsigned long c); * mdn_buffer_overflow -- 'vlen' is too small. */ extern mdn_result_t -mdn__unicode_toupper(unsigned long c, mdn__unicode_context_t ctx, +mdn__unicode_toupper(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp); extern mdn_result_t -mdn__unicode_tolower(unsigned long c, mdn__unicode_context_t ctx, +mdn__unicode_tolower(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp); /* @@ -188,7 +219,7 @@ mdn__unicode_tolower(unsigned long c, mdn__unicode_context_t ctx, * try the next character. */ extern mdn__unicode_context_t -mdn__unicode_getcontext(unsigned long c); +mdn__unicode_getcontext(mdn__unicode_version_t version, unsigned long c); /* * Perform case-folding for caseless matching, defined by Unicode @@ -205,7 +236,8 @@ mdn__unicode_getcontext(unsigned long c); * mdn_buffer_overflow -- 'vlen' is too small. */ extern mdn_result_t -mdn__unicode_casefold(unsigned long c, unsigned long *v, size_t vlen, +mdn__unicode_casefold(mdn__unicode_version_t version, + unsigned long c, unsigned long *v, size_t vlen, int *foldlenp); #endif /* MDN_UNICODE_H */ diff --git a/contrib/idn/mdnkit/include/mdn/unormalize.h b/contrib/idn/mdnkit/include/mdn/unormalize.h index c5d2f393..c67c629f 100644 --- a/contrib/idn/mdnkit/include/mdn/unormalize.h +++ b/contrib/idn/mdnkit/include/mdn/unormalize.h @@ -1,6 +1,7 @@ -/* $Id: unormalize.h,v 1.9 2000/08/02 02:06:41 ishisone Exp $ */ +/* $Id: unormalize.h,v 1.1 2002/01/02 02:46:36 marka Exp $ */ /* - * Copyright (c) 2000 Japan Network Information Center. All rights reserved. + * Copyright (c) 2000,2001 Japan Network Information Center. + * All rights reserved. * * By using this file, you agree to the terms and conditions set forth bellow. * @@ -8,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -70,14 +71,15 @@ */ #include <mdn/result.h> +#include <mdn/unicode.h> /* * Perform Unicode Normalication Form C, D, KC and KD. * * They take NUL-terminated UTF-8 encoded string 'from', perform - * the normalization, put the result (also a NUL-terminated UTF-8 - * encoded string) to 'to', which must be able to hold at least - * 'tolen' bytes. + * the normalization specified by 'version', put the result + * (also a NUL-terminated UTF-8 encoded string) to 'to', which must be + * able to hold at least 'tolen' bytes. * * Returns: * mdn_success -- ok. @@ -86,15 +88,19 @@ * mdn_buffer_overflow -- 'tolen' is too small. */ extern mdn_result_t -mdn__unormalize_formc(const char *from, char *to, size_t tolen); +mdn__unormalize_formc(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen); extern mdn_result_t -mdn__unormalize_formd(const char *from, char *to, size_t tolen); +mdn__unormalize_formd(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen); extern mdn_result_t -mdn__unormalize_formkc(const char *from, char *to, size_t tolen); +mdn__unormalize_formkc(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen); extern mdn_result_t -mdn__unormalize_formkd(const char *from, char *to, size_t tolen); +mdn__unormalize_formkd(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen); #endif /* MDN_UNORMALIZE_H */ diff --git a/contrib/idn/mdnkit/include/mdn/utf5.h b/contrib/idn/mdnkit/include/mdn/utf5.h index 79974720..72b09961 100644 --- a/contrib/idn/mdnkit/include/mdn/utf5.h +++ b/contrib/idn/mdnkit/include/mdn/utf5.h @@ -1,4 +1,4 @@ -/* $Id: utf5.h,v 1.7 2000/07/04 03:52:33 ishisone Exp $ */ +/* $Id: utf5.h,v 1.1 2002/01/02 02:46:36 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/utf6.h b/contrib/idn/mdnkit/include/mdn/utf6.h index 5fe17ffb..cfd44e83 100644 --- a/contrib/idn/mdnkit/include/mdn/utf6.h +++ b/contrib/idn/mdnkit/include/mdn/utf6.h @@ -1,4 +1,4 @@ -/* $Id: utf6.h,v 1.1 2001/06/09 00:30:08 tale Exp $ */ +/* $Id: utf6.h,v 1.1.2.1 2002/02/08 12:13:30 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/utf8.h b/contrib/idn/mdnkit/include/mdn/utf8.h index 48c090fb..8d12b070 100644 --- a/contrib/idn/mdnkit/include/mdn/utf8.h +++ b/contrib/idn/mdnkit/include/mdn/utf8.h @@ -1,4 +1,4 @@ -/* $Id: utf8.h,v 1.8 2000/08/14 07:26:59 ishisone Exp $ */ +/* $Id: utf8.h,v 1.1 2002/01/02 02:46:36 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/util.h b/contrib/idn/mdnkit/include/mdn/util.h index b9a4f1b2..3fdb5933 100644 --- a/contrib/idn/mdnkit/include/mdn/util.h +++ b/contrib/idn/mdnkit/include/mdn/util.h @@ -1,4 +1,4 @@ -/* $Id: util.h,v 1.5 2001/04/20 00:45:06 ishisone Exp $ */ +/* $Id: util.h,v 1.1 2002/01/02 02:46:37 marka Exp $ */ /* * Copyright (c) 2000 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/include/mdn/version.h b/contrib/idn/mdnkit/include/mdn/version.h index 1ae78451..24515f11 100644 --- a/contrib/idn/mdnkit/include/mdn/version.h +++ b/contrib/idn/mdnkit/include/mdn/version.h @@ -1,4 +1,4 @@ -/* $Id: version.h,v 1.1 2001/06/09 00:30:09 tale Exp $ */ +/* $Id: version.h,v 1.1.2.1 2002/02/08 12:13:34 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. * @@ -8,8 +8,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -63,9 +63,9 @@ /* * Version number of this package. */ -#define MDNKIT_VERSION "2.1" +#define MDNKIT_VERSION "2.2.3" #define MDNKIT_MAJOR_VERSION 2 -#define MDNKIT_MINOR_VERSION 1 +#define MDNKIT_MINOR_VERSION 2 /* * Get the version of the library (libmdn). diff --git a/contrib/idn/mdnkit/lib/Makefile.in b/contrib/idn/mdnkit/lib/Makefile.in index c23df948..c19a96c5 100644 --- a/contrib/idn/mdnkit/lib/Makefile.in +++ b/contrib/idn/mdnkit/lib/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.48 2001/05/22 03:00:23 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:37 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -56,7 +56,7 @@ # jurisdiction and venue of Tokyo District Court of Japan. LIB_CURRENT = 7 -LIB_REVISION = 0 +LIB_REVISION = 3 LIB_AGE = 0 .SUFFIXES: .lo @@ -85,21 +85,25 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs SHELL = @SHELL@ LIBTOOL = @LIBTOOL@ +ICONVINC = @ICONVINC@ +ICONVLIB = @ICONVLIB@ + OPTS = -INCS = -I$(srcdir)/../include -I../include +INCS = -I$(srcdir)/../include -I../include $(ICONVINC) DEFS = -DMDN_RESCONF_DIR="\"$(sysconfdir)\"" CFLAGS = $(OPTS) $(INCS) $(DEFS) @CFLAGS@ LDFLAGS = @LDFLAGS@ -ICONVLIB = @ICONVLIB@ - SRCS = \ ace.c \ altdude.c \ amcacem.c \ amcaceo.c \ amcacer.c \ + amcacev.c \ + amcacew.c \ + amcacez.c \ api.c \ brace.c \ checker.c \ @@ -113,6 +117,7 @@ SRCS = \ lace.c \ localencoding.c \ log.c \ + mace.c \ mapper.c \ mapselector.c \ msgheader.c \ @@ -130,7 +135,9 @@ SRCS = \ ucsmap.c \ ucsset.c \ unicode.c \ - unicodedata.c \ + unicode_template.c \ + unicodedata_301.c \ + unicodedata_310.c \ unormalize.c \ utf5.c \ utf6.c \ @@ -144,6 +151,9 @@ OBJS = \ amcacem.lo \ amcaceo.lo \ amcacer.lo \ + amcacev.lo \ + amcacew.lo \ + amcacez.lo \ api.lo \ brace.lo \ checker.lo \ @@ -157,6 +167,7 @@ OBJS = \ lace.lo \ localencoding.lo \ log.lo \ + mace.lo \ mapper.lo \ mapselector.lo \ msgheader.lo \ diff --git a/contrib/idn/mdnkit/lib/ace.c b/contrib/idn/mdnkit/lib/ace.c index cc79390d..556f3857 100644 --- a/contrib/idn/mdnkit/lib/ace.c +++ b/contrib/idn/mdnkit/lib/ace.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: ace.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: ace.c,v 1.1.2.1 2002/02/08 12:13:36 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: ace.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/altdude.c b/contrib/idn/mdnkit/lib/altdude.c index dabe0c1c..abfe887d 100644 --- a/contrib/idn/mdnkit/lib/altdude.c +++ b/contrib/idn/mdnkit/lib/altdude.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: altdude.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: altdude.c,v 1.1.2.1 2002/02/08 12:13:38 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: altdude.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/amcacem.c b/contrib/idn/mdnkit/lib/amcacem.c index d0f1fc10..b0c19b49 100644 --- a/contrib/idn/mdnkit/lib/amcacem.c +++ b/contrib/idn/mdnkit/lib/amcacem.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: amcacem.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: amcacem.c,v 1.1.2.1 2002/02/08 12:13:39 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: amcacem.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/amcaceo.c b/contrib/idn/mdnkit/lib/amcaceo.c index 1882c40a..fea16ac5 100644 --- a/contrib/idn/mdnkit/lib/amcaceo.c +++ b/contrib/idn/mdnkit/lib/amcaceo.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: amcaceo.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: amcaceo.c,v 1.1.2.1 2002/02/08 12:13:40 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: amcaceo.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/amcacer.c b/contrib/idn/mdnkit/lib/amcacer.c index a8cd8ebb..103d532e 100644 --- a/contrib/idn/mdnkit/lib/amcacer.c +++ b/contrib/idn/mdnkit/lib/amcacer.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: amcacer.c,v 1.1.2.1 2002/02/08 12:13:41 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -78,7 +78,7 @@ static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; #include <mdn/util.h> /* - * Although draft-ietf-idn-amc-ace-r-00.txt doesn't specify the ACE + * Although draft-ietf-idn-amc-ace-r-01.txt doesn't specify the ACE * signature, we have to choose one. In order to prevent the converted * name from beginning with a hyphen, we should choose a prefix rather * than a suffix. @@ -87,14 +87,16 @@ static char *rcsid = "$Id: amcacer.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; #define MDN_AMCACER_PREFIX "amc3-" #endif -#define UCSBUF_LOCAL_SIZE 40 +#define MAX_UCS 0x10FFFF +#define AMCACER_BUFSIZE 64 -typedef struct ucsbuf { - unsigned long *ucs; - size_t size; - size_t len; - unsigned long local[UCSBUF_LOCAL_SIZE]; -} ucsbuf_t; +typedef struct { + unsigned long *history; + unsigned long local_buf[AMCACER_BUFSIZE]; + int history_len; + unsigned long refpoint[6]; + int updated; +} amcacer_encode_ctx; static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789"; static const int base32decode_ascii[26] = { @@ -109,21 +111,14 @@ static mdn_result_t amcacer_decode(const char *from, size_t fromlen, char *to, size_t tolen); static mdn_result_t amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen); -static void amcacer_update_refpoints(unsigned long *refpoint, - unsigned long *history, - int n); +static mdn_result_t amcacer_init_ctx(amcacer_encode_ctx *ctx, size_t len); +static void amcacer_free_ctx(amcacer_encode_ctx *ctx); +static void amcacer_update_refpoints(amcacer_encode_ctx *ctx, + unsigned long c); static int amcacer_getwc(const char *s, size_t len, unsigned long *vp); static int amcacer_putwc(char *s, size_t len, unsigned long v, int w); - -static mdn_result_t utf8_to_ucs4(const char *utf8, size_t fromlen, - ucsbuf_t *b); -static mdn_result_t ucs4_to_utf8(ucsbuf_t *b, char *utf8, size_t ulen); -static void ucsbuf_init(ucsbuf_t *b); -static mdn_result_t ucsbuf_grow(ucsbuf_t *b); -static mdn_result_t ucsbuf_append(ucsbuf_t *b, unsigned long v); -static void ucsbuf_free(ucsbuf_t *b); static int is_ldh(unsigned long v); static mdn__ace_t amcacer_ctx = { @@ -139,7 +134,7 @@ static mdn__ace_t amcacer_ctx = { }; static const unsigned long amcacer_refpoint_initial[6] = { - 0, 0x60, 0, 0, 0, 0x10000, + 0, 0xe0, 0xa0, 0, 0, 0x10000, }; @@ -184,17 +179,18 @@ mdn__amcacer_convert(mdn_converter_t ctx, void *privdata, static mdn_result_t amcacer_decode(const char *from, size_t fromlen, char *to, size_t tolen) { - size_t len; - unsigned long refpoint[6], v; - ucsbuf_t ucsb; int literal_mode = 0; + amcacer_encode_ctx ctx; mdn_result_t r; - (void)memcpy(refpoint, amcacer_refpoint_initial, sizeof(refpoint)); - - ucsbuf_init(&ucsb); + /* Initialize context. */ + if ((r = amcacer_init_ctx(&ctx, fromlen)) != mdn_success) + return (r); while (fromlen > 0) { + size_t len; + unsigned long v; + if (from[0] == '-') { if (fromlen > 1 && from[1] == '-') { v = '-'; @@ -218,58 +214,66 @@ amcacer_decode(const char *from, size_t fromlen, char *to, size_t tolen) { } from += len; fromlen -= len; - v = refpoint[len] + v; + v = ctx.refpoint[len] + v; + amcacer_update_refpoints(&ctx, v); } - if ((r = ucsbuf_append(&ucsb, v)) != mdn_success) - goto finish; - amcacer_update_refpoints(refpoint, ucsb.ucs, ucsb.len - 1); + len = mdn_utf8_putwc(to, tolen, v); + if (len == 0) + goto overflow; + to += len; + tolen -= len; } - r = ucs4_to_utf8(&ucsb, to, tolen); - finish: - ucsbuf_free(&ucsb); + /* + * Terminate with NUL. + */ + if (tolen <= 0) + goto overflow; + *to = '\0'; + finish: + amcacer_free_ctx(&ctx); return (r); + + overflow: + r = mdn_buffer_overflow; + goto finish; } static mdn_result_t amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) { - ucsbuf_t ucsb; - unsigned long *buf; - size_t len; int literal_mode = 0; - unsigned long refpoint[6]; + amcacer_encode_ctx ctx; mdn_result_t r; - int i; - /* Initialize refpoints. */ - (void)memcpy(refpoint, amcacer_refpoint_initial, sizeof(refpoint)); - - /* - * Convert input string to UCS-4. - */ - ucsbuf_init(&ucsb); - if ((r = utf8_to_ucs4(from, fromlen, &ucsb)) != mdn_success) + /* Initialize context. */ + if ((r = amcacer_init_ctx(&ctx, fromlen)) != mdn_success) return (r); - buf = ucsb.ucs; - len = ucsb.len; + while (fromlen > 0) { + unsigned long c; + size_t len; - /* - * Now 'buf' contains UCS-4 string consisting of 'len' characters. - */ + len = mdn_utf8_getwc(from, fromlen, &c); + from += len; + fromlen -= len; - for (i = 0; i < len; i++) { - if (buf[i] == '-') { + if (len == 0 || c >= MAX_UCS) { + /* + * Invalid Unicode code point. + */ + r = mdn_invalid_encoding; + goto ret; + } else if (c == '-') { /* * Convert "-" to "--". */ if (tolen < 2) - return (mdn_buffer_overflow); + goto overflow; to[0] = to[1] = '-'; to += 2; tolen -= 2; - } else if (is_ldh(buf[i])) { + } else if (is_ldh(c)) { /* * LDH characters. */ @@ -285,12 +289,13 @@ amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) { } if (tolen < 1) goto overflow; - *to++ = buf[i]; + *to++ = c; tolen--; } else { /* * Non-LDH characters. */ + unsigned long *refpoint = ctx.refpoint; int k; if (literal_mode != 0) { @@ -304,17 +309,16 @@ amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) { literal_mode = 0; } for (k = 1; k < 6; k++) { - if (buf[i] >= refpoint[k] && - buf[i] - refpoint[k] < (1 << (4 * k))) + if (c >= refpoint[k] && + c - refpoint[k] < (1 << (4 * k))) break; } - k = amcacer_putwc(to, tolen, buf[i] - refpoint[k], - k); + k = amcacer_putwc(to, tolen, c - refpoint[k], k); if (k == 0) goto overflow; to += k; tolen -= k; - amcacer_update_refpoints(refpoint, buf, i); + amcacer_update_refpoints(&ctx, c); } } @@ -322,30 +326,56 @@ amcacer_encode(const char *from, size_t fromlen, char *to, size_t tolen) { * Terminate with NUL. */ if (tolen <= 0) - return (mdn_buffer_overflow); + goto overflow; *to = '\0'; + r = mdn_success; + ret: + amcacer_free_ctx(&ctx); + return (r); + + overflow: + r = mdn_buffer_overflow; + goto ret; +} - ucsbuf_free(&ucsb); +static mdn_result_t +amcacer_init_ctx(amcacer_encode_ctx *ctx, size_t len) { + if (len > AMCACER_BUFSIZE) { + ctx->history = malloc(sizeof(ctx->history[0]) * len); + if (ctx->history == NULL) + return (mdn_nomemory); + } else { + ctx->history = ctx->local_buf; + } + ctx->history_len = 0; + (void)memcpy(ctx->refpoint, amcacer_refpoint_initial, + sizeof(ctx->refpoint)); + ctx->updated = 0; return (mdn_success); +} - overflow: - ucsbuf_free(&ucsb); - return (mdn_buffer_overflow); +static void +amcacer_free_ctx(amcacer_encode_ctx *ctx) { + if (ctx->history != ctx->local_buf) + free(ctx->history); + ctx->history = NULL; } static void -amcacer_update_refpoints(unsigned long *refpoint, - unsigned long *history, int n) -{ +amcacer_update_refpoints(amcacer_encode_ctx *ctx, unsigned long c) { + unsigned long *refpoint = ctx->refpoint; + unsigned long *history = ctx->history; int k; - unsigned long lastchar = history[n]; + + history[ctx->history_len++] = c; #define MAX_K(k) (1 << (4 * (k))) #define ROUND_K(v, k) (((v) >> (4 * (k))) << (4 * (k))) - if (n == 0) { + if (!ctx->updated) { for (k = 1; k < 4; k++) - refpoint[k] = ROUND_K(lastchar, k); + refpoint[k] = ROUND_K(c, k); + ctx->updated = 1; return; } @@ -353,13 +383,11 @@ amcacer_update_refpoints(unsigned long *refpoint, unsigned long max = MAX_K(k); int i; - for (i = n - 1; i >= 0; i--) { - if (is_ldh(history[i])) - continue; + for (i = ctx->history_len - 2; i >= 0; i--) { if ((refpoint[k] ^ history[i]) < max) break; - if ((lastchar ^ history[i]) < max) { - refpoint[k] = ROUND_K(lastchar, k); + if ((c ^ history[i]) < max) { + refpoint[k] = ROUND_K(c, k); return; } } @@ -411,88 +439,6 @@ amcacer_putwc(char *s, size_t len, unsigned long v, int w) { return (w); } -/* - * Common Utility Functions. - */ - -static mdn_result_t -utf8_to_ucs4(const char *utf8, size_t fromlen, ucsbuf_t *b) { - mdn_result_t r; - - while (fromlen > 0) { - unsigned long c; - int w; - - if ((w = mdn_utf8_getwc(utf8, fromlen, &c)) == 0) - return (mdn_invalid_encoding); - utf8 += w; - fromlen -= w; - - if ((r = ucsbuf_append(b, c)) != mdn_success) - return (r); - } - return (mdn_success); -} - -static mdn_result_t -ucs4_to_utf8(ucsbuf_t *b, char *utf8, size_t ulen) { - unsigned long *s = b->ucs; - size_t len = b->len; - int i; - - for (i = 0; i < len; i++) { - int w = mdn_utf8_putwc(utf8, ulen, s[i]); - - if (w == 0) - return (mdn_buffer_overflow); - utf8 += w; - ulen -= w; - } - if (ulen < 1) - return (mdn_buffer_overflow); - *utf8 = '\0'; - return (mdn_success); -} - -static void -ucsbuf_init(ucsbuf_t *b) { - b->ucs = b->local; - b->size = UCSBUF_LOCAL_SIZE; - b->len = 0; -} - -static mdn_result_t -ucsbuf_grow(ucsbuf_t *b) { - if (b->ucs == b->local) - b->ucs = NULL; - b->size *= 2; - b->ucs = realloc(b->ucs, sizeof(unsigned long) * b->size); - if (b->ucs == NULL) - return (mdn_nomemory); - return (mdn_success); -} - -static mdn_result_t -ucsbuf_append(ucsbuf_t *b, unsigned long v) { - mdn_result_t r; - - if (b->len + 1 > b->size) { - r = ucsbuf_grow(b); - if (r != mdn_success) - return (r); - } - b->ucs[b->len++] = v; - return (mdn_success); -} - -static void -ucsbuf_free(ucsbuf_t *b) { - if (b->ucs != b->local) { - free(b->ucs); - b->ucs = b->local; - } -} - static int is_ldh(unsigned long v) { if (('a' <= v && v <= 'z') || ('A' <= v && v <= 'Z') || diff --git a/contrib/idn/mdnkit/lib/amcacev.c b/contrib/idn/mdnkit/lib/amcacev.c new file mode 100644 index 00000000..ab400d3e --- /dev/null +++ b/contrib/idn/mdnkit/lib/amcacev.c @@ -0,0 +1,545 @@ +#ifndef lint +static char *rcsid = "$Id: amcacev.c,v 1.1.2.1 2002/02/08 12:13:42 marka Exp $"; +#endif + +/* + * Copyright (c) 2001 Japan Network Information Center. + * All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#include <config.h> + +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#include <mdn/result.h> +#include <mdn/assert.h> +#include <mdn/logmacro.h> +#include <mdn/converter.h> +#include <mdn/utf8.h> +#include <mdn/debug.h> +#include <mdn/amcacev.h> +#include <mdn/ace.h> +#include <mdn/util.h> + +/* + * Although draft-ietf-idn-amc-ace-v-00.txt doesn't specify the ACE + * signature, we have to choose one. In order to prevent the converted + * name from beginning with a hyphen, we should choose a prefix rather + * than a suffix. + */ +#if !defined(MDN_AMCACEV_PREFIX) && !defined(MDN_AMCACEV_SUFFIX) +#define MDN_AMCACEV_PREFIX "amc4-" +#endif + +#define MAX_UCS 0x10FFFF +#define AMCACEV_BUFSIZE 64 + +typedef struct { + unsigned long *history; /* history of non-LDH characters */ + unsigned long local_buf[AMCACEV_BUFSIZE]; + int cur; /* current index */ + int style; /* 0 or 1 */ + unsigned long refpoint[2][6]; /* refpoint[0] is not used. */ +} amcacev_ctx; + +#define IN_WINDOW(ctx, c, st, win) \ + ((c) >= (ctx)->refpoint[st][win] && \ + ((c) - (ctx)->refpoint[st][win]) <= amcacev_winsize[st][win]) + +static const unsigned long amcacev_refpoint_initial[2][6] = { + { 0, 0xe0, 0xa0, 0, 0, 0x10000 }, + { 0, 0, 0, 0, 0, 0x10000 }, +}; +static const unsigned long amcacev_winsize[2][6] = { + { 0, 0xf, 0xff, 0xfff, 0xffff, 0xfffff }, + { 0, 0, 0xff, 0x4fff, 0xffff, 0xfffff }, +}; + +static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789"; +static const int base32decode_ascii[26] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, 11, 12, -1, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, +}; +static const int base32decode_digit[10] = { + -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, +}; + +static mdn_result_t amcacev_decode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t amcacev_encode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t init_ctx(amcacev_ctx *ctx, size_t len); +static void release_ctx(amcacev_ctx *ctx); +static void update_ctx(amcacev_ctx *ctx, unsigned long v); +static unsigned long get_refpoint(unsigned long v, int st, int win); +static int eval_compression(amcacev_ctx *ctx); +static unsigned long encode_delta(unsigned long v, + amcacev_ctx *ctx, int *szp); +static int amcacev_getwc(const char *s, size_t len, int style, + unsigned long *vp); +static int amcacev_putwc(char *s, size_t len, + unsigned long delta, int w); +static int is_ldh(unsigned long v); + +static mdn__ace_t amcacev_profile = { +#ifdef MDN_AMCACEV_PREFIX + mdn__ace_prefix, + MDN_AMCACEV_PREFIX, +#else + mdn__ace_suffix, + MDN_AMCACEV_SUFFIX, +#endif + amcacev_encode, + amcacev_decode, +}; + + + +/* ARGSUSED */ +mdn_result_t +mdn__amcacev_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ + return (mdn_success); +} + +/* ARGSUSED */ +mdn_result_t +mdn__amcacev_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ + return (mdn_success); +} + +mdn_result_t +mdn__amcacev_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + + assert(ctx != NULL && + (dir == mdn_converter_l2u || dir == mdn_converter_u2l)); + + TRACE(("mdn__amcacev_convert(dir=%s,from=\"%s\")\n", + dir == mdn_converter_l2u ? "l2u" : "u2l", + mdn_debug_xstring(from, 20))); + + r = mdn__ace_convert(&amcacev_profile, dir, from, to, tolen); + if (r != mdn_success) + return (r); + + DUMP(("mdn__amcacev_convert: \"%s\"\n", mdn_debug_xstring(to, 70))); + + return (r); +} + +static mdn_result_t +amcacev_decode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal_mode = 0; + amcacev_ctx ctx; + mdn_result_t r; + + /* Initialize context. */ + if ((r = init_ctx(&ctx, fromlen)) != mdn_success) + return (r); + + while (fromlen > 0) { + unsigned long v; + int len; + + if (from[0] == '-') { + if (fromlen > 1 && from[1] == '-') { + v = '-'; + from += 2; + fromlen -= 2; + } else { + literal_mode = !literal_mode; + from++; + fromlen--; + continue; + } + } else if (literal_mode) { + v = from[0]; + from++; + fromlen--; + } else { + len = amcacev_getwc(from, fromlen, ctx.style, &v); + if (len == 0) + goto invalid_encoding; + from += len; + fromlen -= len; + + v += ctx.refpoint[ctx.style][len]; + + /* Update refpoints. */ + update_ctx(&ctx, v); + } + + len = mdn_utf8_putwc(to, tolen, v); + if (len == 0) + goto overflow; + to += len; + tolen -= len; + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + goto overflow; + *to = '\0'; + + ret: + release_ctx(&ctx); + return (r); + + invalid_encoding: + r = mdn_invalid_encoding; + goto ret; + overflow: + r = mdn_buffer_overflow; + goto ret; +} + +static mdn_result_t +amcacev_encode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal_mode = 0; + amcacev_ctx ctx; + mdn_result_t r; + + /* Initialize context. */ + if ((r = init_ctx(&ctx, fromlen)) != mdn_success) + return (r); + + while (fromlen > 0) { + unsigned long c; + size_t len; + + len = mdn_utf8_getwc(from, fromlen, &c); + from += len; + fromlen -= len; + if (len == 0) + goto invalid_encoding; + + if (c >= MAX_UCS) { + /* + * Invalid Unicode code point. + */ + goto invalid_encoding; + } else if (c == '-') { + /* + * Convert "-" to "--". + */ + if (tolen < 2) + goto overflow; + to[0] = to[1] = '-'; + to += 2; + tolen -= 2; + } else if (is_ldh(c)) { + /* + * LDH characters. + */ + if (literal_mode == 0) { + /* + * Go into literal mode. + */ + if (tolen < 1) + goto overflow; + *to++ = '-'; + tolen--; + literal_mode = 1; + } + if (tolen < 1) + goto overflow; + *to++ = c; + tolen--; + } else { + /* + * Non-LDH characters. + */ + int sz; + unsigned long delta; + + if (literal_mode != 0) { + /* + * Get out of literal mode. + */ + if (tolen < 1) + goto overflow; + *to++ = '-'; + tolen--; + literal_mode = 0; + } + delta = encode_delta(c, &ctx, &sz); + sz = amcacev_putwc(to, tolen, delta, sz); + if (sz == 0) + goto overflow; + to += sz; + tolen -= sz; + + /* Add to the history, and update refpoints. */ + update_ctx(&ctx, c); + } + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + goto overflow; + + *to = '\0'; + + ret: + release_ctx(&ctx); + return (r); + + invalid_encoding: + r = mdn_invalid_encoding; + goto ret; + overflow: + r = mdn_buffer_overflow; + goto ret; +} + +static mdn_result_t +init_ctx(amcacev_ctx *ctx, size_t len) { + if (len <= AMCACEV_BUFSIZE) { + ctx->history = ctx->local_buf; + } else { + ctx->history = malloc(sizeof(ctx->history[0]) * len); + if (ctx->history == NULL) + return (mdn_nomemory); + } + ctx->cur = 0; + ctx->style = 0; + (void)memcpy(ctx->refpoint, amcacev_refpoint_initial, + sizeof(ctx->refpoint)); + return (mdn_success); +} + +static void +release_ctx(amcacev_ctx *ctx) { + if (ctx->history != ctx->local_buf) + free(ctx->history); + ctx->history = NULL; +} + +static void +update_ctx(amcacev_ctx *ctx, unsigned long v) { + int st, win; + + /* Get style */ + if (IN_WINDOW(ctx, v, 0, 1)) + ctx->style = 0; + else if (!IN_WINDOW(ctx, v, 0, 1) && + !IN_WINDOW(ctx, v, 0, 2) && + !IN_WINDOW(ctx, v, 0, 3)) + ctx->style = 1; + + /* Add the character to the history. */ + ctx->history[ctx->cur++] = v; + + for (st = 0; st < 2; st++) { + for (win = (st == 0) ? 1 : 2; win < 4; win++) { + unsigned long oldref = ctx->refpoint[st][win]; + unsigned long newref = get_refpoint(v, st, win); + int enclen1, enclen2; + + if (newref == oldref) + continue; + + enclen1 = eval_compression(ctx); + ctx->refpoint[st][win] = newref; + enclen2 = eval_compression(ctx); + if (enclen2 > enclen1) + ctx->refpoint[st][win] = oldref; + } + } +} + +static unsigned long +get_refpoint(unsigned long v, int st, int win) { +#define ROUND_BITS(v, b) (((v) >> (b)) << (b)) + if (win == 1) { + return (ROUND_BITS(v, 3)); + } else if (win == 2) { + if (0xa0 <= v && v <= 0x17f) + return (0xa0); + else + return (ROUND_BITS(v, 8)); + } else if (win == 3) { + if (0x3000 <= v && v <= 0x9ffff) + return (0x4e00); + else if (st == 1 && 0xa000 <= v && v <= 0xd7ff) + return (0x8800); + else + return (ROUND_BITS(v, (st == 0) ? 19 : 20)); + } else { + FATAL(("get_refpoint: internal error\n")); + return (0); /* for lint */ + } +#undef ROUND_BITS +} + +static int +eval_compression(amcacev_ctx *ctx) { + int i; + int len = 0; + int cur = ctx->cur; + unsigned long *p = ctx->history; + + for (i = 0; i < cur; i++) { + if (!is_ldh(p[i])) { + int sz; + (void)encode_delta(p[i], ctx, &sz); + len += sz; + } + } + return (len); +} + +static unsigned long +encode_delta(unsigned long v, amcacev_ctx *ctx, int *szp) { + int sz; + + for (sz = (ctx->style == 0) ? 1 : 2; sz < 6; sz++) { + if (IN_WINDOW(ctx, v, ctx->style, sz)) { + *szp = sz; + return (v - ctx->refpoint[ctx->style][sz]); + } + } + FATAL(("amcacev_encode_mode: internal error\n")); + return (0); /* for lint */ +} + +static int +amcacev_getwc(const char *s, size_t len, int style, unsigned long *vp) { + size_t orglen = len; + unsigned long v = 0; + int style1_special = 0; + + while (len > 0) { + int c = *s++; + + if ('a' <= c && c <= 'z') + c = base32decode_ascii[c - 'a']; + else if ('A' <= c && c <= 'Z') + c = base32decode_ascii[c - 'A']; + else if ('0' <= c && c <= '9') + c = base32decode_digit[c - '0']; + else + c = -1; + + if (c < 0) + return (0); /* invalid character */ + + if (style == 1 && len == orglen && (c & 0x10) == 0) + style1_special = 3; + + len--; + if (style1_special != 0) { + v = (v << 5) + (c & 0x1f); + if (--style1_special == 0) { + *vp = v + 0x1000; + return (3); + } + } else { + v = (v << 4) + (c & 0xf); + + if ((c & 0x10) == 0) { + *vp = v; + return (orglen - len); + } + } + } + return (0); /* final character missing */ +} + +static int +amcacev_putwc(char *s, size_t len, unsigned long delta, int w) { + if (len < w) + return (0); + + if (w == 3 && delta >= 0x1000) { + delta -= 0x1000; + s[0] = base32encode[(delta >> 10) & 0x1f]; + s[1] = base32encode[(delta >> 5) & 0x1f]; + s[2] = base32encode[delta & 0x1f]; + } else { + int i, shift; + + for (shift = 0, i = w - 1; i >= 0; i--) { + s[i] = base32encode[(delta & 0xf) + shift]; + delta >>= 4; + shift = 16; + } + } + return (w); +} + +static int +is_ldh(unsigned long v) { + if (('a' <= v && v <= 'z') || ('A' <= v && v <= 'Z') || + ('0' <= v && v <= '9') || v == '-') + return (1); + else + return (0); +} diff --git a/contrib/idn/mdnkit/lib/amcacew.c b/contrib/idn/mdnkit/lib/amcacew.c new file mode 100644 index 00000000..0723cd32 --- /dev/null +++ b/contrib/idn/mdnkit/lib/amcacew.c @@ -0,0 +1,459 @@ +#ifndef lint +static char *rcsid = "$Id: amcacew.c,v 1.1.2.1 2002/02/08 12:13:44 marka Exp $"; +#endif + +/* + * Copyright (c) 2001 Japan Network Information Center. + * All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#include <config.h> + +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#include <mdn/result.h> +#include <mdn/assert.h> +#include <mdn/logmacro.h> +#include <mdn/converter.h> +#include <mdn/utf8.h> +#include <mdn/debug.h> +#include <mdn/amcacew.h> +#include <mdn/ace.h> +#include <mdn/util.h> + +/* + * Although draft-ietf-idn-amc-ace-w-00.txt doesn't specify the ACE + * signature, we have to choose one. In order to prevent the converted + * name from beginning with a hyphen, we should choose a prefix rather + * than a suffix. + */ +#if !defined(MDN_AMCACEW_PREFIX) && !defined(MDN_AMCACEW_SUFFIX) +#define MDN_AMCACEW_PREFIX "amc5-" +#endif + +#define MAX_UCS 0x10FFFF + +typedef struct { + int style; /* 0 or 1 */ + unsigned long refpoint[6]; /* refpoint[0] is not used. */ +} amcacew_ctx; + +static const unsigned long amcacew_refpoint_initial[6] = { + 0, 0xe0, 0xa0, 0, 0, 0x10000, +}; + +static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789"; +static const int base32decode_ascii[26] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, 11, 12, -1, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, +}; +static const int base32decode_digit[10] = { + -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, +}; + +static mdn_result_t amcacew_decode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t amcacew_encode(const char *from, size_t fromlen, + char *to, size_t tolen); +static void amcacew_init_ctx(amcacew_ctx *ctx); +static void amcacew_update_ctx(amcacew_ctx *ctx, unsigned long v, + int sz); +static unsigned long amcacew_encode_delta(unsigned long v, + amcacew_ctx *ctx, int *szp); +static int amcacew_getwc(const char *s, size_t len, int style, + unsigned long *vp); +static int amcacew_putwc(char *s, size_t len, + unsigned long delta, int w); +static int is_ldh(unsigned long v); + +static mdn__ace_t amcacew_profile = { +#ifdef MDN_AMCACEW_PREFIX + mdn__ace_prefix, + MDN_AMCACEW_PREFIX, +#else + mdn__ace_suffix, + MDN_AMCACEW_SUFFIX, +#endif + amcacew_encode, + amcacew_decode, +}; + + + +/* ARGSUSED */ +mdn_result_t +mdn__amcacew_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ + return (mdn_success); +} + +/* ARGSUSED */ +mdn_result_t +mdn__amcacew_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ + return (mdn_success); +} + +mdn_result_t +mdn__amcacew_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + + assert(ctx != NULL && + (dir == mdn_converter_l2u || dir == mdn_converter_u2l)); + + TRACE(("mdn__amcacew_convert(dir=%s,from=\"%s\")\n", + dir == mdn_converter_l2u ? "l2u" : "u2l", + mdn_debug_xstring(from, 20))); + + r = mdn__ace_convert(&amcacew_profile, dir, from, to, tolen); + if (r != mdn_success) + return (r); + + DUMP(("mdn__amcacew_convert: \"%s\"\n", mdn_debug_xstring(to, 70))); + + return (r); +} + +static mdn_result_t +amcacew_decode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal_mode = 0; + amcacew_ctx ctx; + + /* Initialize refpoints. */ + amcacew_init_ctx(&ctx); + + while (fromlen > 0) { + unsigned long v; + int len; + + if (from[0] == '-') { + if (fromlen > 1 && from[1] == '-') { + v = '-'; + from += 2; + fromlen -= 2; + } else { + literal_mode = !literal_mode; + from++; + fromlen--; + continue; + } + } else if (literal_mode) { + v = from[0]; + from++; + fromlen--; + } else { + len = amcacew_getwc(from, fromlen, ctx.style, &v); + if (len == 0) + return (mdn_invalid_encoding); + from += len; + fromlen -= len; + + v += ctx.refpoint[len]; + + amcacew_update_ctx(&ctx, v, len); + } + + len = mdn_utf8_putwc(to, tolen, v); + if (len == 0) + return (mdn_buffer_overflow); + to += len; + tolen -= len; + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + return (mdn_buffer_overflow); + *to = '\0'; + + return (mdn_success); +} + +static mdn_result_t +amcacew_encode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal_mode = 0; + amcacew_ctx ctx; + + /* Initialize refpoints. */ + amcacew_init_ctx(&ctx); + + while (fromlen > 0) { + unsigned long c; + size_t len; + + len = mdn_utf8_getwc(from, fromlen, &c); + from += len; + fromlen -= len; + if (len == 0) + return (mdn_invalid_encoding); + + if (c > MAX_UCS) { + /* + * Invalid Unicode code point. + */ + return (mdn_invalid_encoding); + } else if (c == '-') { + /* + * Convert "-" to "--". + */ + if (tolen < 2) + return (mdn_buffer_overflow); + to[0] = to[1] = '-'; + to += 2; + tolen -= 2; + } else if (is_ldh(c)) { + /* + * LDH characters. + */ + if (literal_mode == 0) { + /* + * Go into literal mode. + */ + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = '-'; + tolen--; + literal_mode = 1; + } + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = c; + tolen--; + } else { + /* + * Non-LDH characters. + */ + int sz; + unsigned long delta; + + if (literal_mode != 0) { + /* + * Get out of literal mode. + */ + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = '-'; + tolen--; + literal_mode = 0; + } + delta = amcacew_encode_delta(c, &ctx, &sz); + sz = amcacew_putwc(to, tolen, delta, sz); + if (sz == 0) + return (mdn_buffer_overflow); + to += sz; + tolen -= sz; + amcacew_update_ctx(&ctx, c, sz); + } + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + return (mdn_buffer_overflow); + + *to = '\0'; + + return (mdn_success); +} + +static void +amcacew_init_ctx(amcacew_ctx *ctx) { + ctx->style = 0; + (void)memcpy(ctx->refpoint, amcacew_refpoint_initial, + sizeof(ctx->refpoint)); +} + +static void +amcacew_update_ctx(amcacew_ctx *ctx, unsigned long v, int sz) { + if (sz != 3) + ctx->style = (sz < 3) ? 0 : 1; + +#define ROUND_BITS(v, b) (((v) >> (b)) << (b)) + /* Update refpoint[1] */ + ctx->refpoint[1] = ROUND_BITS(v, 4); + + /* Update refpoint[2] */ + if (sz > 2) { + if (0xa0 <= v && v <= 0x17f) + ctx->refpoint[2] = 0xa0; + else + ctx->refpoint[2] = ROUND_BITS(v, 8); + } + + /* Update refpoint[3] */ + if (sz > 3) { + if (0x3000 <= v && v <= 0x9fff) + ctx->refpoint[3] = 0x4e00; + else if (0xa000 <= v && v <= 0xd7ff && ctx->style == 1) + ctx->refpoint[3] = 0x8800; + else + ctx->refpoint[3] = ROUND_BITS(v, 12); + } +#undef ROUND_BITS +} + +static unsigned long +amcacew_encode_delta(unsigned long v, amcacew_ctx *ctx, int *szp) { + int sz, szinit; + unsigned long *maxdelta; + unsigned long *refpoint = ctx->refpoint; + static unsigned long maxdelta_style0[6] = { + 0, 0xf, 0xff, 0xfff, 0xffff, 0xfffff, + }; + static unsigned long maxdelta_style1[6] = { + 0, 0, 0xff, 0x4fff, 0xffff, 0xfffff, + }; + + if (ctx->style == 0) { + szinit = 1; + maxdelta = maxdelta_style0; + } else { + szinit = 2; + maxdelta = maxdelta_style1; + } + for (sz = szinit; sz < 6; sz++) { + if (v >= refpoint[sz] && v - refpoint[sz] <= maxdelta[sz]) { + *szp = sz; + return (v - refpoint[sz]); + } + } + FATAL(("amcacew_encode_mode: internal error\n")); + return (0); /* for lint */ +} + +static int +amcacew_getwc(const char *s, size_t len, int style, unsigned long *vp) { + size_t orglen = len; + unsigned long v = 0; + int style1_special = 0; + + while (len > 0) { + int c = *s++; + + if ('a' <= c && c <= 'z') + c = base32decode_ascii[c - 'a']; + else if ('A' <= c && c <= 'Z') + c = base32decode_ascii[c - 'A']; + else if ('0' <= c && c <= '9') + c = base32decode_digit[c - '0']; + else + c = -1; + + if (c < 0) + return (0); /* invalid character */ + + if (style == 1 && len == orglen && (c & 0x10) == 0) + style1_special = 3; + + len--; + if (style1_special != 0) { + v = (v << 5) + (c & 0x1f); + if (--style1_special == 0) { + *vp = v + 0x1000; + return (3); + } + } else { + v = (v << 4) + (c & 0xf); + + if ((c & 0x10) == 0) { + *vp = v; + return (orglen - len); + } + } + } + return (0); /* final character missing */ +} + +static int +amcacew_putwc(char *s, size_t len, unsigned long delta, int w) { + if (len < w) + return (0); + + if (w == 3 && delta >= 0x1000) { + delta -= 0x1000; + s[0] = base32encode[(delta >> 10) & 0x1f]; + s[1] = base32encode[(delta >> 5) & 0x1f]; + s[2] = base32encode[delta & 0x1f]; + } else { + int i, shift; + + for (shift = 0, i = w - 1; i >= 0; i--) { + s[i] = base32encode[(delta & 0xf) + shift]; + delta >>= 4; + shift = 16; + } + } + return (w); +} + +static int +is_ldh(unsigned long v) { + if (('a' <= v && v <= 'z') || ('A' <= v && v <= 'Z') || + ('0' <= v && v <= '9') || v == '-') + return (1); + else + return (0); +} diff --git a/contrib/idn/mdnkit/lib/amcacez.c b/contrib/idn/mdnkit/lib/amcacez.c new file mode 100644 index 00000000..94ded277 --- /dev/null +++ b/contrib/idn/mdnkit/lib/amcacez.c @@ -0,0 +1,484 @@ +#ifndef lint +static char *rcsid = "$Id: amcacez.c,v 1.1.2.1 2002/02/08 12:13: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) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#include <config.h> + +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#include <mdn/result.h> +#include <mdn/assert.h> +#include <mdn/logmacro.h> +#include <mdn/converter.h> +#include <mdn/utf8.h> +#include <mdn/debug.h> +#include <mdn/amcacez.h> +#include <mdn/ace.h> +#include <mdn/util.h> + +/* + * Although draft-ietf-idn-amc-ace-z-01.txt doesn't specify the ACE + * signature, we have to choose one. In order to prevent the converted + * name from beginning with a hyphen, we should choose a prefix rather + * than a suffix. + */ +#if !defined(MDN_AMCACEZ_PREFIX) && !defined(MDN_AMCACEZ_SUFFIX) +#define MDN_AMCACEZ_PREFIX "zq--" +#endif + +#define INVALID_UCS 0x80000000 +#define MAX_UCS 0x10FFFF + +/* + * As the draft states, it is possible that `delta' may overflow during + * the encoding. The upper bound of 'delta' is: + * <# of chars. of input string> + <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 AMCACEZ_MAXINPUT 3800 + +/* + * Parameters. + */ +#define AMCACEZ_BASE 36 +#define AMCACEZ_TMIN 1 +#define AMCACEZ_TMAX 26 +#define AMCACEZ_SKEW 38 +#define AMCACEZ_DAMP 700 +#define AMCACEZ_INITIAL_BIAS 72 +#define AMCACEZ_INITIAL_N 0x80 + +static mdn_result_t amcacez_decode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t amcacez_encode(const char *from, size_t fromlen, + char *to, size_t tolen); +static int amcacez_getwc(const char *s, size_t len, + int bias, unsigned long *vp); +static int amcacez_putwc(char *s, size_t len, + unsigned long delta, int bias); +static int amcacez_update_bias(unsigned long delta, + size_t npoints, int first); + +static mdn__ace_t amcacez_profile = { +#ifdef MDN_AMCACEZ_PREFIX + mdn__ace_prefix, + MDN_AMCACEZ_PREFIX, +#else + mdn__ace_suffix, + MDN_AMCACEZ_SUFFIX, +#endif + amcacez_encode, + amcacez_decode, +}; + + + +/* ARGSUSED */ +mdn_result_t +mdn__amcacez_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ + return (mdn_success); +} + +/* ARGSUSED */ +mdn_result_t +mdn__amcacez_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ + return (mdn_success); +} + +mdn_result_t +mdn__amcacez_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + + assert(ctx != NULL && + (dir == mdn_converter_l2u || dir == mdn_converter_u2l)); + + TRACE(("mdn__amcacez_convert(dir=%s,from=\"%s\")\n", + dir == mdn_converter_l2u ? "l2u" : "u2l", + mdn_debug_xstring(from, 20))); + + r = mdn__ace_convert(&amcacez_profile, dir, from, to, tolen); + if (r != mdn_success) + return (r); + + DUMP(("mdn__amcacez_convert: \"%s\"\n", mdn_debug_xstring(to, 70))); + + return (r); +} + +static mdn_result_t +amcacez_decode(const char *from, size_t fromlen, char *to, size_t tolen) { + unsigned long *ucs, ucs_tmp[64], c, idx; + size_t uidx, fidx, ucslen; + int first, bias; + mdn_result_t r; + + /* + * Allocate enough memory for UCS-4 code point array 'ucs'. + */ + if (fromlen > 64) { + ucs = malloc(fromlen * sizeof(unsigned long)); + if (ucs == NULL) + return (mdn_nomemory); + } else { + ucs = ucs_tmp; + } + ucslen = 0; + + /* + * Find the last delimiter, and copy the characters + * before it verbatim. + */ + for (fidx = fromlen; fidx > 0; fidx--) { + if (from[fidx - 1] == '-') { + for (uidx = 0; uidx < fidx - 1; uidx++) { + ucs[uidx] = from[uidx]; + } + ucslen = uidx; + break; + } + } + + first = 1; + bias = AMCACEZ_INITIAL_BIAS; + c = AMCACEZ_INITIAL_N; + idx = 0; + while (fidx < fromlen) { + int len; + unsigned long delta; + int i; + + len = amcacez_getwc(from + fidx, fromlen - fidx, bias, &delta); + if (len == 0) + return (mdn_invalid_encoding); + fidx += len; + + bias = amcacez_update_bias(delta, ucslen + 1, first); + first = 0; + idx += delta; + c += idx / (ucslen + 1); + uidx = idx % (ucslen + 1); + + /* Insert 'c' at uidx. */ + for (i = ucslen; i > uidx; i--) + ucs[i] = ucs[i - 1]; + ucs[uidx] = c; + + ucslen++; + idx = uidx + 1; + } + + /* + * Convert from UCS-4 to UTF-8. + */ + for (uidx = 0; uidx < ucslen; uidx++) { + int len = mdn_utf8_putwc(to, tolen, ucs[uidx]); + if (len == 0) + goto overflow; + to += len; + tolen -= len; + } + /* Terminate with NUL. */ + if (tolen <= 0) + goto overflow; + *to = '\0'; + + r = mdn_success; + ret: + if (ucs != ucs_tmp) + free(ucs); + return (r); + + overflow: + r = mdn_buffer_overflow; + goto ret; +} + +static mdn_result_t +amcacez_encode(const char *from, size_t fromlen, char *to, size_t tolen) { + unsigned long *ucs, ucs_tmp[64]; + unsigned long cur_code, next_code, delta; + size_t ucslen, ucsdone; + size_t toidx; + int uidx, bias, first; + mdn_result_t r; + + /* + * Convert UTF-8 string 'from' to UCS-4 code point array 'ucs'. + */ + if (fromlen > 64) { + ucs = malloc(fromlen * sizeof(unsigned long)); + if (ucs == NULL) + return (mdn_nomemory); + } else { + ucs = ucs_tmp; + } + ucslen = 0; + while (fromlen > 0) { + unsigned long c; + int len; + + len = mdn_utf8_getwc(from, fromlen, &c); + if (len == 0 || c > MAX_UCS) + goto invalid; + ucs[ucslen++] = c; + from += len; + fromlen -= len; + } + + /* + * If the input string is too long (actually too long to be sane), + * return failure in order to prevent possible overflow. + */ + if (ucslen > AMCACEZ_MAXINPUT) + return (mdn_failure); + + ucsdone = 0; /* number of characters processed */ + toidx = 0; + + /* + * First, pick up basic code points and copy them to 'to'. + */ + for (uidx = 0; uidx < ucslen; uidx++) { + if (ucs[uidx] < 0x80) { + if (toidx >= tolen) + goto overflow; + to[toidx++] = ucs[uidx]; + ucsdone++; + } + } + + /* + * If there are any basic code points, output a delimiter + * (hyphen-minus). + */ + if (toidx > 0) { + if (toidx >= tolen) + goto overflow; + to[toidx++] = '-'; + to += toidx; + tolen -= toidx; + } + + /* + * Then encode non-basic characters. + */ + first = 1; + cur_code = AMCACEZ_INITIAL_N; + bias = AMCACEZ_INITIAL_BIAS; + delta = 0; + while (ucsdone < ucslen) { + int limit = -1, rest; + + /* + * Find the smallest code point equal to or greater + * than 'cur_code'. Also remember the index of the + * last occurence of the code point. + */ + for (next_code = MAX_UCS, uidx = ucslen - 1; + uidx >= 0; uidx--) { + if (ucs[uidx] >= cur_code && ucs[uidx] < next_code) { + next_code = ucs[uidx]; + limit = uidx; + } + } + /* There must be such code point. */ + assert(limit >= 0); + + delta += (next_code - cur_code) * (ucsdone + 1); + cur_code = next_code; + + /* + * Scan the input string again, and encode characters + * whose code point is 'cur_code'. Use 'limit' to avoid + * unnecessary scan. + */ + for (uidx = 0, rest = ucsdone; uidx <= limit; uidx++) { + if (ucs[uidx] < cur_code) { + delta++; + rest--; + } else if (ucs[uidx] == cur_code) { + int sz = amcacez_putwc(to, tolen, delta, bias); + if (sz == 0) + goto overflow; + to += sz; + tolen -= sz; + ucsdone++; + bias = amcacez_update_bias(delta, ucsdone, + first); + delta = 0; + first = 0; + } + } + delta += rest + 1; + cur_code++; + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + goto overflow; + *to = '\0'; + + r = mdn_success; + ret: + if (ucs != ucs_tmp) + free(ucs); + return (r); + + invalid: + r = mdn_invalid_encoding; + goto ret; + overflow: + r = mdn_buffer_overflow; + goto ret; +} + +static int +amcacez_getwc(const char *s, size_t len, int bias, unsigned long *vp) { + size_t orglen = len; + unsigned long v = 0, w = 1; + int k; + + for (k = AMCACEZ_BASE - bias; len > 0; k += AMCACEZ_BASE) { + int c = *s++; + int t = (k < AMCACEZ_TMIN) ? AMCACEZ_TMIN : + (k > AMCACEZ_TMAX) ? AMCACEZ_TMAX : k; + + len--; + if ('a' <= c && c <= 'z') + c = c - 'a'; + else if ('A' <= c && c <= 'Z') + c = c - 'A'; + else if ('0' <= c && c <= '9') + c = c - '0' + 26; + else + c = -1; + + if (c < 0) + return (0); /* invalid character */ + + v += c * w; + + if (c < t) { + *vp = v; + return (orglen - len); + } + + w *= (AMCACEZ_BASE - t); + } + + return (0); /* final character missing */ +} + +static int +amcacez_putwc(char *s, size_t len, unsigned long delta, int bias) { + const char *amcacez_base36 = "abcdefghijklmnopqrstuvwxyz0123456789"; + int k; + char *sorg = s; + + for (k = AMCACEZ_BASE - bias; 1; k += AMCACEZ_BASE) { + int t = (k < AMCACEZ_TMIN) ? AMCACEZ_TMIN : + (k > AMCACEZ_TMAX) ? AMCACEZ_TMAX : k; + + if (delta < t) + break; + if (len < 1) + return (0); + *s++ = amcacez_base36[t + ((delta - t) % (AMCACEZ_BASE - t))]; + len--; + delta = (delta - t) / (AMCACEZ_BASE - t); + } + if (len < 1) + return (0); + *s++ = amcacez_base36[delta]; + return (s - sorg); +} + +static int +amcacez_update_bias(unsigned long delta, size_t npoints, int first) { + int k = 0; + + delta /= first ? AMCACEZ_DAMP : 2; + delta += delta / npoints; + + while (delta > ((AMCACEZ_BASE - AMCACEZ_TMIN) * AMCACEZ_TMAX) / 2) { + delta /= AMCACEZ_BASE - AMCACEZ_TMIN; + k++; + } + return (AMCACEZ_BASE * k + + (((AMCACEZ_BASE - AMCACEZ_TMIN + 1) * delta) / + (delta + AMCACEZ_SKEW))); +} diff --git a/contrib/idn/mdnkit/lib/api.c b/contrib/idn/mdnkit/lib/api.c index cd25322b..adea7be4 100644 --- a/contrib/idn/mdnkit/lib/api.c +++ b/contrib/idn/mdnkit/lib/api.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: api.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; +static char *rcsid = "$Id: api.c,v 1.1.2.1 2002/02/08 12:13:46 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: api.c,v 1.1 2001/06/09 00:30:12 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -89,7 +89,7 @@ static struct actiondesc { #define ENCODE_MASK \ (MDN_LOCALCONV|MDN_IDNCONV|MDN_NAMEPREP|MDN_UNASCHECK|\ MDN_DELIMMAP|MDN_LOCALMAP) -#define DECODE_MASK (MDN_LOCALCONV|MDN_IDNCONV) +#define DECODE_MASK (MDN_LOCALCONV|MDN_NAMEPREP|MDN_UNASCHECK|MDN_IDNCONV) static int initialized; static mdn_resconf_t default_conf; @@ -128,7 +128,7 @@ mdn_encodename(int actions, const char *from, char *to, size_t tolen) { TRACE(("mdn_encodename(actions=%s, from=\"%s\")\n", actions_to_string(actions), - mdn_debug_xstring(from, 30))); + mdn_debug_xstring(from, 256))); if (actions & ~ENCODE_MASK) { WARNING(("mdn_encodename: invalid actions 0x%x\n", actions)); @@ -169,7 +169,7 @@ mdn_decodename(int actions, const char *from, char *to, size_t tolen) { TRACE(("mdn_decodename(actions=%s, from=\"%s\")\n", actions_to_string(actions), - mdn_debug_xstring(from, 30))); + mdn_debug_xstring(from, 256))); if (actions & ~DECODE_MASK) { WARNING(("mdn_decodename: invalid actions 0x%x\n", actions)); @@ -181,6 +181,14 @@ mdn_decodename(int actions, const char *from, char *to, size_t tolen) { if (actions & MDN_IDNCONV) *p++ = 'i'; + if (actions & MDN_NAMEPREP) { + *p++ = '!'; + *p++ = 'N'; + } + if (actions & MDN_UNASCHECK) { + *p++ = '!'; + *p++ = 'u'; + } if (actions & MDN_LOCALCONV) *p++ = 'L'; *p = '\0'; diff --git a/contrib/idn/mdnkit/lib/brace.c b/contrib/idn/mdnkit/lib/brace.c index d87533e4..e0601d42 100644 --- a/contrib/idn/mdnkit/lib/brace.c +++ b/contrib/idn/mdnkit/lib/brace.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: brace.c,v 1.16 2001/03/07 00:58:51 ishisone Exp $"; +static char *rcsid = "$Id: brace.c,v 1.1 2002/01/02 02:46:40 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: brace.c,v 1.16 2001/03/07 00:58:51 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/checker.c b/contrib/idn/mdnkit/lib/checker.c index 93d91354..8eea39da 100644 --- a/contrib/idn/mdnkit/lib/checker.c +++ b/contrib/idn/mdnkit/lib/checker.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: checker.c,v 1.1 2001/06/09 00:30:14 tale Exp $"; +static char *rcsid = "$Id: checker.c,v 1.1.2.1 2002/02/08 12:13:48 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: checker.c,v 1.1 2001/06/09 00:30:14 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -88,36 +88,54 @@ typedef struct { /* * Standard checking schemes. */ -static const check_scheme_t nameprep_02_prohibit_scheme = { - "prohibit#nameprep-02", - "nameprep-02", +static const check_scheme_t nameprep_03_prohibit_scheme = { + "prohibit#nameprep-03", + "nameprep-03", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_prohibitproc, NULL, }; -static const check_scheme_t nameprep_02_unasigned_scheme = { - "unassigned#nameprep-02", - "nameprep-02", +static const check_scheme_t nameprep_03_unasigned_scheme = { + "unassigned#nameprep-03", + "nameprep-03", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_unassignedproc, NULL, }; -static const check_scheme_t nameprep_03_prohibit_scheme = { - "prohibit#nameprep-03", - "nameprep-03", +static const check_scheme_t nameprep_05_prohibit_scheme = { + "prohibit#nameprep-05", + "nameprep-05", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_prohibitproc, NULL, }; -static const check_scheme_t nameprep_03_unasigned_scheme = { - "unassigned#nameprep-03", - "nameprep-03", +static const check_scheme_t nameprep_05_unasigned_scheme = { + "unassigned#nameprep-05", + "nameprep-05", + mdn__nameprep_createproc, + mdn__nameprep_destroyproc, + mdn__nameprep_unassignedproc, + NULL, +}; + +static const check_scheme_t nameprep_06_prohibit_scheme = { + "prohibit#nameprep-06", + "nameprep-06", + mdn__nameprep_createproc, + mdn__nameprep_destroyproc, + mdn__nameprep_prohibitproc, + NULL, +}; + +static const check_scheme_t nameprep_06_unasigned_scheme = { + "unassigned#nameprep-06", + "nameprep-06", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_unassignedproc, @@ -143,10 +161,12 @@ static const check_scheme_t filecheck_unassigned_scheme = { }; static const check_scheme_t *standard_check_schemes[] = { - &nameprep_02_unasigned_scheme, - &nameprep_02_prohibit_scheme, &nameprep_03_unasigned_scheme, &nameprep_03_prohibit_scheme, + &nameprep_05_unasigned_scheme, + &nameprep_05_prohibit_scheme, + &nameprep_06_unasigned_scheme, + &nameprep_06_prohibit_scheme, &filecheck_prohibit_scheme, &filecheck_unassigned_scheme, NULL, @@ -357,6 +377,9 @@ mdn_checker_add(mdn_checker_t ctx, const char *scheme_name) { ctx->schemes[ctx->nschemes].context = scheme_context; ctx->nschemes++; + if (buffer != static_buffer) + free(buffer); + return (mdn_success); failure: @@ -390,6 +413,7 @@ mdn_checker_addall(mdn_checker_t ctx, const char **scheme_names, mdn_result_t mdn_checker_lookup(mdn_checker_t ctx, const char *utf8, const char **found) { mdn_result_t r; + const char *p; int i; assert(scheme_hash != NULL); @@ -402,15 +426,16 @@ mdn_checker_lookup(mdn_checker_t ctx, const char *utf8, const char **found) { * Lookup. */ for (i = 0; i < ctx->nschemes; i++) { - r = (ctx->schemes[i].lookup)(ctx->schemes[i].context, utf8, - found); - if (r != mdn_success) - return (r); - else if (*found == NULL) - return (mdn_success); - else if (**found != '.') - return (mdn_prohibited); - utf8 = *found + 1; + for (p = utf8; *p != '\0'; p = *found + 1) { + r = (ctx->schemes[i].lookup)(ctx->schemes[i].context, + p, found); + if (r != mdn_success) + return (r); + else if (*found == NULL) + break; + else if (**found != '.') + return (mdn_success); + } } *found = NULL; diff --git a/contrib/idn/mdnkit/lib/converter.c b/contrib/idn/mdnkit/lib/converter.c index 32a558a6..3f9e70e2 100644 --- a/contrib/idn/mdnkit/lib/converter.c +++ b/contrib/idn/mdnkit/lib/converter.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $"; +static char *rcsid = "$Id: converter.c,v 1.1 2002/01/02 02:46:40 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -75,18 +75,24 @@ static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $ #include <mdn/logmacro.h> #include <mdn/converter.h> #include <mdn/strhash.h> -#include <mdn/utf8.h> -#include <mdn/utf6.h> -#include <mdn/utf5.h> #include <mdn/debug.h> +#include <mdn/utf8.h> +#include <mdn/amcacez.h> #include <mdn/race.h> +#include <mdn/dude.h> +#ifdef MDN_EXTRA_ACE +#include <mdn/utf5.h> +#include <mdn/utf6.h> #include <mdn/brace.h> #include <mdn/lace.h> -#include <mdn/dude.h> #include <mdn/altdude.h> #include <mdn/amcacem.h> #include <mdn/amcaceo.h> #include <mdn/amcacer.h> +#include <mdn/amcacev.h> +#include <mdn/amcacew.h> +#include <mdn/mace.h> +#endif /* MDN_EXTRA_ACE */ #ifndef MDN_UTF8_ENCODING_NAME #define MDN_UTF8_ENCODING_NAME "UTF-8" /* by IANA */ @@ -121,6 +127,18 @@ static char *rcsid = "$Id: converter.c,v 1.35 2001/04/17 01:35:42 ishisone Exp $ #ifndef MDN_AMCACER_ENCODING_NAME #define MDN_AMCACER_ENCODING_NAME "AMC-ACE-R" #endif +#ifndef MDN_AMCACEV_ENCODING_NAME +#define MDN_AMCACEV_ENCODING_NAME "AMC-ACE-V" +#endif +#ifndef MDN_AMCACEW_ENCODING_NAME +#define MDN_AMCACEW_ENCODING_NAME "AMC-ACE-W" +#endif +#ifndef MDN_AMCACEZ_ENCODING_NAME +#define MDN_AMCACEZ_ENCODING_NAME "AMC-ACE-Z" +#endif +#ifndef MDN_MACE_ENCODING_NAME +#define MDN_MACE_ENCODING_NAME "MACE" +#endif #define MAX_RECURSE 20 @@ -128,7 +146,7 @@ typedef struct { mdn_converter_openproc_t open; mdn_converter_closeproc_t close; mdn_converter_convertproc_t convert; - int ascii_compatible; + int encoding_type; } converter_ops_t; struct mdn_converter { @@ -176,6 +194,7 @@ static mdn_result_t converter_iconv_convert(mdn_converter_t ctx, mdn_converter_dir_t dir, const char *from, char *to, size_t tolen); +#ifdef MDN_EXTRA_ACE static mdn_result_t converter_utf5_open(mdn_converter_t ctx, mdn_converter_dir_t dir, void **privdata); @@ -187,6 +206,8 @@ static mdn_result_t converter_utf5_convert(mdn_converter_t ctx, mdn_converter_dir_t dir, const char *from, char *to, size_t tolen); +#endif + #ifdef DEBUG static mdn_result_t converter_uescape_open(mdn_converter_t ctx, mdn_converter_dir_t dir, @@ -205,14 +226,14 @@ static converter_ops_t none_converter_ops = { converter_none_open, converter_none_close, converter_none_convert, - 0, + MDN_NONACE, }; static converter_ops_t iconv_converter_ops = { converter_iconv_open, converter_iconv_close, converter_iconv_convert, - 0, + MDN_NONACE, }; /* @@ -372,10 +393,17 @@ mdn_converter_localencoding(mdn_converter_t ctx) { } int +mdn_converter_encodingtype(mdn_converter_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_converter_encodingtype()\n")); + return (ctx->ops->encoding_type); +} + +int mdn_converter_isasciicompatible(mdn_converter_t ctx) { assert(ctx != NULL); TRACE(("mdn_converter_isasciicompatible()\n")); - return (ctx->ops->ascii_compatible); + return (ctx->ops->encoding_type != MDN_NONACE); } mdn_result_t @@ -422,7 +450,7 @@ mdn_converter_register(const char *name, mdn_converter_openproc_t open, mdn_converter_closeproc_t close, mdn_converter_convertproc_t convert, - int ascii_compatible) { + int encoding_type) { converter_ops_t *ops; mdn_result_t r; @@ -438,7 +466,7 @@ mdn_converter_register(const char *name, ops->open = open; ops->close = close; ops->convert = convert; - ops->ascii_compatible = ascii_compatible; + ops->encoding_type = encoding_type; r = mdn_strhash_put(encoding_name_hash, name, ops); if (r != mdn_success) @@ -451,11 +479,11 @@ static mdn_result_t register_standard_encoding(void) { mdn_result_t r; - r = mdn_converter_register(MDN_UTF5_ENCODING_NAME, - converter_utf5_open, - converter_utf5_close, - converter_utf5_convert, - 1); + r = mdn_converter_register(MDN_AMCACEZ_ENCODING_NAME, + mdn__amcacez_open, + mdn__amcacez_close, + mdn__amcacez_convert, + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); @@ -463,7 +491,24 @@ register_standard_encoding(void) { mdn__race_open, mdn__race_close, mdn__race_convert, - 1); + MDN_ACE_LOOSECASE); + if (r != mdn_success) + return (r); + + r = mdn_converter_register(MDN_DUDE_ENCODING_NAME, + mdn__dude_open, + mdn__dude_close, + mdn__dude_convert, + MDN_ACE_LOOSECASE); + if (r != mdn_success) + return (r); + +#ifdef MDN_EXTRA_ACE + r = mdn_converter_register(MDN_UTF5_ENCODING_NAME, + converter_utf5_open, + converter_utf5_close, + converter_utf5_convert, + MDN_ACE_LOOSECASE); if (r != mdn_success) return (r); @@ -471,7 +516,7 @@ register_standard_encoding(void) { mdn__brace_open, mdn__brace_close, mdn__brace_convert, - 1); + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); @@ -479,15 +524,7 @@ register_standard_encoding(void) { mdn__lace_open, mdn__lace_close, mdn__lace_convert, - 1); - if (r != mdn_success) - return (r); - - r = mdn_converter_register(MDN_DUDE_ENCODING_NAME, - mdn__dude_open, - mdn__dude_close, - mdn__dude_convert, - 1); + MDN_ACE_LOOSECASE); if (r != mdn_success) return (r); @@ -495,7 +532,7 @@ register_standard_encoding(void) { mdn__utf6_open, mdn__utf6_close, mdn__utf6_convert, - 1); + MDN_ACE_LOOSECASE); if (r != mdn_success) return (r); @@ -503,7 +540,7 @@ register_standard_encoding(void) { mdn__altdude_open, mdn__altdude_close, mdn__altdude_convert, - 1); + MDN_ACE_LOOSECASE); if (r != mdn_success) return (r); @@ -511,7 +548,7 @@ register_standard_encoding(void) { mdn__amcacem_open, mdn__amcacem_close, mdn__amcacem_convert, - 1); + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); @@ -519,7 +556,7 @@ register_standard_encoding(void) { mdn__amcaceo_open, mdn__amcaceo_close, mdn__amcaceo_convert, - 1); + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); @@ -527,17 +564,42 @@ register_standard_encoding(void) { mdn__amcacer_open, mdn__amcacer_close, mdn__amcacer_convert, - 1); + MDN_ACE_STRICTCASE); if (r != mdn_success) return (r); + r = mdn_converter_register(MDN_AMCACEV_ENCODING_NAME, + mdn__amcacev_open, + mdn__amcacev_close, + mdn__amcacev_convert, + MDN_ACE_STRICTCASE); + if (r != mdn_success) + return (r); + + r = mdn_converter_register(MDN_AMCACEW_ENCODING_NAME, + mdn__amcacew_open, + mdn__amcacew_close, + mdn__amcacew_convert, + MDN_ACE_STRICTCASE); + if (r != mdn_success) + return (r); + + r = mdn_converter_register(MDN_MACE_ENCODING_NAME, + mdn__mace_open, + mdn__mace_close, + mdn__mace_convert, + MDN_ACE_STRICTCASE); + if (r != mdn_success) + return (r); +#endif /* MDN_EXTRA_ACE */ + #ifdef DEBUG /* This is convenient for debug. Not useful for other purposes. */ r = mdn_converter_register("U-escape", converter_uescape_open, converter_uescape_close, converter_uescape_convert, - 0); + MDN_NONACE); if (r != mdn_success) return (r); #endif /* DEBUG */ @@ -561,8 +623,11 @@ mdn_converter_addalias(const char *alias_name, const char *real_name) { if (strcmp(alias_name, real_name) == 0) return (mdn_success); - if (encoding_alias_hash == NULL) + if (encoding_alias_hash == NULL) { + WARNING(("mdn_converter_addalias: the module is not \n" + "initialized")); return (mdn_failure); + } if ((rn_copy = malloc(strlen(real_name) + 1)) == NULL) { WARNING(("mdn_converter_addalias: malloc failed\n")); @@ -905,6 +970,7 @@ converter_iconv_convert(mdn_converter_t ctx, void *privdata, case E2BIG: return (mdn_buffer_overflow); default: + WARNING(("iconv failed with errno %d\n", errno)); return (mdn_failure); } } @@ -935,6 +1001,8 @@ converter_iconv_convert(mdn_converter_t ctx, void *privdata, case E2BIG: return (mdn_buffer_overflow); default: + WARNING(("iconv failed with errno %d\n", + errno)); return (mdn_failure); } } @@ -948,6 +1016,8 @@ converter_iconv_convert(mdn_converter_t ctx, void *privdata, * Conversion to/from UTF-5. */ +#ifdef MDN_EXTRA_ACE + /* ARGSUSED */ static mdn_result_t converter_utf5_open(mdn_converter_t ctx, mdn_converter_dir_t dir, @@ -1020,6 +1090,8 @@ overflow: return (mdn_buffer_overflow); } +#endif + #ifdef DEBUG /* * Conversion to/from unicode escape string. diff --git a/contrib/idn/mdnkit/lib/debug.c b/contrib/idn/mdnkit/lib/debug.c index 967b7189..b0928bb0 100644 --- a/contrib/idn/mdnkit/lib/debug.c +++ b/contrib/idn/mdnkit/lib/debug.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: debug.c,v 1.6 2000/07/04 03:52:36 ishisone Exp $"; +static char *rcsid = "$Id: debug.c,v 1.1 2002/01/02 02:46:40 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: debug.c,v 1.6 2000/07/04 03:52:36 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/delimitermap.c b/contrib/idn/mdnkit/lib/delimitermap.c index 4f8fa78e..d5f7ef34 100644 --- a/contrib/idn/mdnkit/lib/delimitermap.c +++ b/contrib/idn/mdnkit/lib/delimitermap.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: delimitermap.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; +static char *rcsid = "$Id: delimitermap.c,v 1.1.2.1 2002/02/08 12:13:52 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: delimitermap.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/dn.c b/contrib/idn/mdnkit/lib/dn.c index 2ef84425..33b38444 100644 --- a/contrib/idn/mdnkit/lib/dn.c +++ b/contrib/idn/mdnkit/lib/dn.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: dn.c,v 1.8 2000/09/20 02:47:31 ishisone Exp $"; +static char *rcsid = "$Id: dn.c,v 1.1 2002/01/02 02:46:41 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: dn.c,v 1.8 2000/09/20 02:47:31 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/dude.c b/contrib/idn/mdnkit/lib/dude.c index b6ed0a46..42801ef6 100644 --- a/contrib/idn/mdnkit/lib/dude.c +++ b/contrib/idn/mdnkit/lib/dude.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: dude.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; +static char *rcsid = "$Id: dude.c,v 1.1.2.1 2002/02/08 12:13:55 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: dude.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -77,17 +77,20 @@ static char *rcsid = "$Id: dude.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; #include <mdn/ace.h> #include <mdn/util.h> -#ifndef MDN_DUDE_PREFIX +/* + * The following prefix is recommended by IETF IDN wg for test purposes. + */ +#if !defined(MDN_DUDE_PREFIX) && !defined(MDN_DUDE_SUFFIX) #define MDN_DUDE_PREFIX "dq--" #endif -static unsigned long nibble_mask[] = { - 0, /* dummy: this element is never referenced. */ - 0xf, - 0xff, - 0xfff, - 0xffff, - 0xfffff, +static const char *base32encode = "abcdefghijkmnpqrstuvwxyz23456789"; +static const int base32decode_ascii[26] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, 11, 12, -1, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, +}; +static const int base32decode_digit[10] = { + -1, -1, 24, 25, 26, 27, 28, 29, 30, 31, }; static mdn_result_t dude_decode(const char *from, size_t fromlen, @@ -97,31 +100,40 @@ static mdn_result_t dude_encode(const char *from, size_t fromlen, static int get_nibblelength(unsigned long v); static int dude_getwc(const char *s, size_t len, unsigned long *vp); -static int dude_putwc(char *s, size_t len, unsigned long v, - int w); +static int dude_putwc(char *s, size_t len, unsigned long v); static mdn__ace_t dude_ctx = { +#ifdef MDN_DUDE_PREFIX mdn__ace_prefix, MDN_DUDE_PREFIX, +#else + mdn__ace_suffix, + MDN_DUDE_SUFFIX, +#endif dude_encode, dude_decode, }; /* ARGSUSED */ mdn_result_t -mdn__dude_open(mdn_converter_t ctx, mdn_converter_dir_t dir, void **privdata) { +mdn__dude_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ return (mdn_success); } /* ARGSUSED */ mdn_result_t -mdn__dude_close(mdn_converter_t ctx, void *privdata, mdn_converter_dir_t dir) { +mdn__dude_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ return (mdn_success); } mdn_result_t -mdn__dude_convert(mdn_converter_t ctx, void *privdata, mdn_converter_dir_t dir, - const char *from, char *to, size_t tolen) +mdn__dude_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) { mdn_result_t r; @@ -144,9 +156,9 @@ mdn__dude_convert(mdn_converter_t ctx, void *privdata, mdn_converter_dir_t dir, static mdn_result_t dude_decode(const char *from, size_t fromlen, char *to, size_t tolen) { size_t len; - unsigned long prev, v, mask; + unsigned long prev, v; - prev = 0; + prev = 96; while (fromlen > 0) { if (from[0] == '-') { v = '-'; @@ -158,14 +170,16 @@ dude_decode(const char *from, size_t fromlen, char *to, size_t tolen) { return (mdn_invalid_encoding); from += len; fromlen -= len; - mask = nibble_mask[len]; - v = (prev & ~mask) | v; + v = prev ^ v; /* - * Perform extra sanity checks. + * Since round-trip check is performed later + * by mdn__ace_convert(), we don't need the + * following sanity checking. + * + * if (v == '-' || get_nibblelength(v) != len) + * return (mdn_invalid_encoding); */ - if (v == '-' || get_nibblelength(prev ^ v) != len) - return (mdn_invalid_encoding); prev = v; } @@ -189,14 +203,14 @@ dude_decode(const char *from, size_t fromlen, char *to, size_t tolen) { static mdn_result_t dude_encode(const char *from, size_t fromlen, char *to, size_t tolen) { size_t len; - unsigned long prev, c, v, mask; + unsigned long prev, c; - prev = 0; + prev = 96; while (fromlen > 0) { len = mdn_utf8_getwc(from, fromlen, &c); from += len; fromlen -= len; - if (len == 0 || c >= 0x100000) + if (len == 0) return (mdn_invalid_encoding); if (c == '-') { /* @@ -207,13 +221,10 @@ dude_encode(const char *from, size_t fromlen, char *to, size_t tolen) { *to++ = '-'; tolen--; } else { - int nlen = get_nibblelength(prev ^ c); - mask = nibble_mask[nlen]; - v = c & mask; - prev = c; - len = dude_putwc(to, tolen, v, nlen); + len = dude_putwc(to, tolen, prev ^ c); if (len == 0) return (mdn_buffer_overflow); + prev = c; to += len; tolen -= len; } @@ -232,82 +243,63 @@ dude_encode(const char *from, size_t fromlen, char *to, size_t tolen) { static int get_nibblelength(unsigned long v) { - assert(v < 0x100000); - - if (v <= 0xf) - return 1; - else if (v <= 0xff) - return 2; - else if (v <= 0xfff) - return 3; - else if (v <= 0xffff) - return 4; - else - return 5; + assert(v <= 0x7fffffff); + + if (v < (1<<16)) { /* v <= 16bit */ + if (v < (1<<8)) /* v <= 8bit */ + return ((v < (1<<4)) ? 1 : 2); + else /* 8bit < v <= 16bit */ + return ((v < (1<<12)) ? 3 : 4); + } else { /* 16bit < c */ + if (v < (1<<24)) /* 16bit < c <= 24bit */ + return ((v < (1<<20)) ? 5 : 6); + else /* 24bit < c <= 31bit */ + return ((v < (1<<28)) ? 7 : 8); + } } static int dude_getwc(const char *s, size_t len, unsigned long *vp) { size_t orglen = len; unsigned long v = 0; - int c; - if (len < 1) - return (0); + while (len > 0) { + int c = *s++; + + if ('a' <= c && c <= 'z') + c = base32decode_ascii[c - 'a']; + else if ('A' <= c && c <= 'Z') + c = base32decode_ascii[c - 'A']; + else if ('0' <= c && c <= '9') + c = base32decode_digit[c - '0']; + else + c = -1; - c = *s++; - len--; + if (c < 0) + return (0); /* invalid character */ - if ('G' <= c && c <= 'V') - v = c - 'G'; - else if ('g' <= c && c <= 'v') - v = c - 'g'; - else /* invalid character */ - return (0); + v = (v << 4) + (c & 0xf); - while (len > 0) { - c = *s++; - if ('0' <= c && c <= '9') - c = c - '0'; - else if ('A' <= c && c <= 'F') - c = c - 'A' + 10; - else if ('a' <= c && c <= 'f') - c = c - 'a' + 10; - else - break; - v = (v << 4) + c; len--; + if ((c & 0x10) == 0) { + *vp = v; + return (orglen - len); + } } - len = orglen - len; - - if (len > 5) - return (0); - - *vp = v; - return (len); + return (0); /* final character missing */ } static int -dude_putwc(char *s, size_t len, unsigned long v, int w) { - int i; - - assert(v < 0x100000); - assert(w > 0 && w < 6 && v <= nibble_mask[w]); +dude_putwc(char *s, size_t len, unsigned long v) { + int i, w, shift; - if (len < w) + if ((w = get_nibblelength(v)) > len) return (0); - for (i = w - 1; i >= 0; i--) { - int x = v & 0xf; - - if (i == 0) - s[i] = 'g' + x; - else if (x < 10) - s[i] = '0' + x; - else - s[i] = 'a' + x - 10; + for (shift = 0, i = w - 1; i >= 0; i--) { + s[i] = base32encode[(v & 0xf) + shift]; v >>= 4; + shift = 16; } - return (w); } diff --git a/contrib/idn/mdnkit/lib/filechecker.c b/contrib/idn/mdnkit/lib/filechecker.c index e960c4ea..7a99bca3 100644 --- a/contrib/idn/mdnkit/lib/filechecker.c +++ b/contrib/idn/mdnkit/lib/filechecker.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: filechecker.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; +static char *rcsid = "$Id: filechecker.c,v 1.1.2.1 2002/02/08 12:13:56 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: filechecker.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/filemapper.c b/contrib/idn/mdnkit/lib/filemapper.c index 5669e8b4..39ef214e 100644 --- a/contrib/idn/mdnkit/lib/filemapper.c +++ b/contrib/idn/mdnkit/lib/filemapper.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: filemapper.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; +static char *rcsid = "$Id: filemapper.c,v 1.1.2.1 2002/02/08 12:13:57 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: filemapper.c,v 1.1 2001/06/09 00:30:15 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/lace.c b/contrib/idn/mdnkit/lib/lace.c index 8562e875..9539c4ce 100644 --- a/contrib/idn/mdnkit/lib/lace.c +++ b/contrib/idn/mdnkit/lib/lace.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: lace.c,v 1.11 2001/03/28 06:37:24 m-kasahr Exp $"; +static char *rcsid = "$Id: lace.c,v 1.1 2002/01/02 02:46:42 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: lace.c,v 1.11 2001/03/28 06:37:24 m-kasahr Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/localencoding.c b/contrib/idn/mdnkit/lib/localencoding.c index d61a8987..cdfcbc89 100644 --- a/contrib/idn/mdnkit/lib/localencoding.c +++ b/contrib/idn/mdnkit/lib/localencoding.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: localencoding.c,v 1.8 2000/09/20 02:47:31 ishisone Exp $"; +static char *rcsid = "$Id: localencoding.c,v 1.1 2002/01/02 02:46:42 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: localencoding.c,v 1.8 2000/09/20 02:47:31 ishisone Ex * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/log.c b/contrib/idn/mdnkit/lib/log.c index badea85d..a94ab5f2 100644 --- a/contrib/idn/mdnkit/lib/log.c +++ b/contrib/idn/mdnkit/lib/log.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: log.c,v 1.12 2000/10/16 05:00:18 ishisone Exp $"; +static char *rcsid = "$Id: log.c,v 1.1 2002/01/02 02:46:43 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: log.c,v 1.12 2000/10/16 05:00:18 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -149,7 +149,8 @@ mdn_log_setlevel(int level) { int mdn_log_getlevel(void) { - initialize(); + if (log_level < 0) + initialize(); return log_level; } diff --git a/contrib/idn/mdnkit/lib/mace.c b/contrib/idn/mdnkit/lib/mace.c new file mode 100644 index 00000000..e179721c --- /dev/null +++ b/contrib/idn/mdnkit/lib/mace.c @@ -0,0 +1,506 @@ +#ifndef lint +static char *rcsid = "$Id: mace.c,v 1.1.2.1 2002/02/08 12:14:01 marka Exp $"; +#endif + +/* + * Copyright (c) 2001 Japan Network Information Center. All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#include <config.h> + +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#include <mdn/result.h> +#include <mdn/assert.h> +#include <mdn/logmacro.h> +#include <mdn/converter.h> +#include <mdn/utf8.h> +#include <mdn/debug.h> +#include <mdn/mace.h> +#include <mdn/ace.h> +#include <mdn/util.h> + +/* + * MACE + */ + +#ifndef MDN_MACE_PREFIX +#define MDN_MACE_PREFIX "mq--" +#endif + +/* Mode switcher */ +#define MACE_MODE_SWITCH '-' /* Literal/Non-Literal switching */ + +/* Submode introducer */ +#define MACE_SUBMODE_BMP_A 'w' /* U+0000-U+1FFF, U+A000-U+FFFF */ +#define MACE_SUBMODE_BMP_B 'x' /* U+2000-U+9FFF */ +#define MACE_SUBMODE_NONBMP 'y' /* U+10000-U+10FFFF */ +#define MACE_SUBMODE_COMP 'z' /* 4/9bit differential encoding */ + +/* Initial state */ +#define MACE_SUBMODE_INIT MACE_SUBMODE_BMP_A +#define MACE_PREV_INIT 0 + +#define MACE_COMP_BITS_1 4 +#define MACE_COMP_BITS_2 9 +#define MACE_COMP_MASK ((1 << MACE_COMP_BITS_2) - 1) +#define MACE_SAME_PREFIX(b, c1, c2) (((c1) ^ (c2)) < (1 << (b))) + +#define MACE_INVALID_CHAR 0x80000000 + +static mdn_result_t mace_decode(const char *from, size_t fromlen, + char *to, size_t tolen); +static mdn_result_t mace_encode(const char *from, size_t fromlen, + char *to, size_t tolen); +static int mace_get_submode(int submode, unsigned long c, + unsigned long prev, + const char *rest, size_t rlen); +static int mace_getbase32(const char *s, int w, + unsigned long *vp); +static int mace_encodelength(int submode); +static int mace_getwc(const char *s, size_t len, int mode, + unsigned long ref, unsigned long *vp); +static int mace_putwc(char *s, size_t len, int mode, + unsigned long ref, unsigned long v); +static int peek_next_nonldh(const char *rest, size_t rlen, + unsigned long *cp); +static int letter_or_digit(unsigned long v); + +static mdn__ace_t mace_ctx = { + mdn__ace_prefix, + MDN_MACE_PREFIX, + mace_encode, + mace_decode, +}; + +/* ARGSUSED */ +mdn_result_t +mdn__mace_open(mdn_converter_t ctx, mdn_converter_dir_t dir, + void **privdata) +{ + return (mdn_success); +} + +/* ARGSUSED */ +mdn_result_t +mdn__mace_close(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir) +{ + return (mdn_success); +} + +mdn_result_t +mdn__mace_convert(mdn_converter_t ctx, void *privdata, + mdn_converter_dir_t dir, + const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + + assert(ctx != NULL && + (dir == mdn_converter_l2u || dir == mdn_converter_u2l)); + + TRACE(("mdn__mace_convert(dir=%s,from=\"%s\")\n", + dir == mdn_converter_l2u ? "l2u" : "u2l", + mdn_debug_xstring(from, 20))); + + r = mdn__ace_convert(&mace_ctx, dir, from, to, tolen); + if (r != mdn_success) + return (r); + + DUMP(("mdn__mace_convert: \"%s\"\n", mdn_debug_xstring(to, 70))); + + return (r); +} + +static mdn_result_t +mace_decode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal = 0; + int submode = MACE_SUBMODE_INIT; + unsigned long prev = MACE_PREV_INIT; + + while (fromlen > 0) { + int consume = 1; /* # of input octets consumed */ + unsigned long c = MACE_INVALID_CHAR; + + if (from[0] == MACE_MODE_SWITCH) { + /* + * LD/non-LD mode switcher or just a hyphen. + */ + if (fromlen > 1 && from[1] == MACE_MODE_SWITCH) { + c = MACE_MODE_SWITCH; + consume = 2; + } else { + literal = !literal; + } + } else if (literal) { + /* + * Now in LD mode. Just output literally. + */ + if (tolen < 1) + return (mdn_buffer_overflow); + c = from[0]; + } else if (from[0] == 'w' || from[0] == 'W') { + submode = MACE_SUBMODE_BMP_A; + } else if (from[0] == 'x' || from[0] == 'X') { + submode = MACE_SUBMODE_BMP_B; + } else if (from[0] == 'y' || from[0] == 'Y') { + submode = MACE_SUBMODE_NONBMP; + } else if (from[0] == 'z' || from[0] == 'Z') { + submode = MACE_SUBMODE_COMP; + } else { + /* + * Must be base32-format string. + */ + consume = mace_getwc(from, fromlen, submode, + prev, &c); + if (consume == 0) + return (mdn_invalid_encoding); + prev = c; + } + + /* Output decoded character. */ + if (c != MACE_INVALID_CHAR) { + size_t len = mdn_utf8_putwc(to, tolen, c); + if (len == 0) + return (mdn_buffer_overflow); + to += len; + tolen -= len; + } + + from += consume; + fromlen -= consume; + } + + /* + * Terminate with NUL. + */ + if (tolen <= 0) + return (mdn_buffer_overflow); + *to = '\0'; + + return (mdn_success); +} + +static mdn_result_t +mace_encode(const char *from, size_t fromlen, char *to, size_t tolen) { + int literal = 0; + int submode = MACE_SUBMODE_INIT; + unsigned long prev = MACE_PREV_INIT; + + while (fromlen > 0) { + unsigned long c; + size_t len; + + /* Get next character. */ + len = mdn_utf8_getwc(from, fromlen, &c); + if (len == 0 || c > 0x10ffff) + return (mdn_invalid_encoding); + from += len; + fromlen -= len; + + if (c == '-') { + /* + * Hyphen. Always encode as `--'. + */ + if (tolen < 2) + return (mdn_buffer_overflow); + to[0] = to[1] = '-'; + to += 2; + tolen -= 2; + } else if (letter_or_digit(c)) { + /* + * Letter or digit. + * Shift to Literal mode if necessary, then + * encode it as it is. + */ + if (!literal) { + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = MACE_MODE_SWITCH; + tolen--; + literal = 1; + } + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = c; + tolen--; + } else { + /* + * Non-LDH character. + */ + int new_submode; + + /* Move back from LD mode if necessary. */ + if (literal) { + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = MACE_MODE_SWITCH; + tolen--; + literal = 0; + } + + /* Determine the new submode and shift to it. */ + new_submode = mace_get_submode(submode, c, prev, + from, fromlen); + if (new_submode != submode) { + if (tolen < 1) + return (mdn_buffer_overflow); + *to++ = new_submode; /* introducer */ + tolen--; + submode = new_submode; + } + + /* Encode and output the character. */ + len = mace_putwc(to, tolen, submode, prev, c); + if (len == 0) + return (mdn_buffer_overflow); + to += len; + tolen -= len; + + prev = c; + } + } + + /* + * Terminate with NUL. + */ + if (tolen < 1) + return (mdn_buffer_overflow); + + *to = '\0'; + return (mdn_success); +} + +static int +mace_get_submode(int submode, unsigned long c, unsigned long prev, + const char *rest, size_t rlen) +{ + /* + * Determine the submode. + */ + unsigned long nxt; + + /* + * First, check if we should use Compress submode. + */ + if (MACE_SAME_PREFIX(MACE_COMP_BITS_2, prev, c) && + (submode == MACE_SUBMODE_COMP || + c > 0xffff || + MACE_SAME_PREFIX(MACE_COMP_BITS_1, prev, c) || + (peek_next_nonldh(rest, rlen, &nxt) && + MACE_SAME_PREFIX(MACE_COMP_BITS_2, c, nxt)))) + return (MACE_SUBMODE_COMP); + + /* + * Then, determine the submode based on the code point. + */ + if (c > 0xffff) + return (MACE_SUBMODE_NONBMP); + else if (0x2000 <= c && c <= 0x9fff) + return (MACE_SUBMODE_BMP_B); + else + return (MACE_SUBMODE_BMP_A); + +} + +static int +mace_encodelength(int submode) { + switch (submode) { + case MACE_SUBMODE_BMP_A: + case MACE_SUBMODE_BMP_B: + return (3); + case MACE_SUBMODE_NONBMP: + return (4); + default: /* MACE_SUBMODE_COMP */ + return (1); /* actually 1 or 2. caller must decide. */ + } +} + +static int +mace_getbase32(const char *s, int w, unsigned long *vp) { + unsigned long v = 0; + + while (w-- > 0) { + int c = *s++; + + if ('a' <= c && c <= 'v') + c = c - 'a' + 10; + else if ('A' <= c && c <= 'V') + c = c - 'A' + 10; + else if ('0' <= c && c <= '9') + c = c - '0'; + else + return (0); /* invalid character */ + v = (v << 5) + (c & 0x1f); + } + *vp = v; + return (1); +} + +static int +mace_getwc(const char *s, size_t len, int submode, + unsigned long prev, unsigned long *vp) +{ + unsigned long v = 0; + int w = mace_encodelength(submode); + + if (len < w || !mace_getbase32(s, w, &v)) + return (0); + + switch (submode) { + case MACE_SUBMODE_BMP_A: + if (v >= 0x2000) + v += 0x8000; + break; + case MACE_SUBMODE_BMP_B: + v += 0x2000; + break; + case MACE_SUBMODE_NONBMP: + v += 0x10000; + break; + case MACE_SUBMODE_COMP: + if (v > 0xf) { + w = 2; + if (len < w || !mace_getbase32(s, w, &v)) + return (0); + } + v = prev ^ (v & MACE_COMP_MASK); + break; + default: + FATAL(("mace_getwc: internal error")); + break; + } + *vp = v; + + return (w); +} + +static int +mace_putwc(char *s, size_t len, int submode, + unsigned long prev, unsigned long v) +{ + static const char *base32encode = "0123456789abcdefghijklmnopqrstuv"; + int w = mace_encodelength(submode); + int i; + + switch (submode) { + case MACE_SUBMODE_BMP_A: + if (v >= 0xa000) + v -= 0x8000; + break; + case MACE_SUBMODE_BMP_B: + v -= 0x2000; + break; + case MACE_SUBMODE_NONBMP: + v -= 0x10000; + break; + case MACE_SUBMODE_COMP: + v = (prev ^ v) & MACE_COMP_MASK; + if (v > 0xf) { + v |= 0x200; + w++; + } + break; + default: + FATAL(("mace_putwc: internal error")); + break; + } + + if (len < w) + return (0); + + for (i = w - 1; i >= 0; i--) { + s[i] = base32encode[v & 0x1f]; + v >>= 5; + } + return (w); +} + +static int +peek_next_nonldh(const char *rest, size_t rlen, unsigned long *cp) { + /* + * Get the next non-LDH character from 'rest', store its + * code point to '*cp' and return 1. If there are no + * such character, return 0. + */ + while (rlen > 0) { + unsigned long v; + size_t len; + + if ((len = mdn_utf8_getwc(rest, rlen, &v)) == 0) { + break; + } else if (v != '-' && !letter_or_digit(v)) { + *cp = v; + return (1); + } + rest += len; + rlen -= len; + } + return (0); +} + +static int +letter_or_digit(unsigned long v) { + if (('a' <= v && v <= 'z') || + ('A' <= v && v <= 'Z') || + ('0' <= v && v <= '9')) + return (1); + else + return (0); +} diff --git a/contrib/idn/mdnkit/lib/make.wnt b/contrib/idn/mdnkit/lib/make.wnt index 961316c0..467df543 100644 --- a/contrib/idn/mdnkit/lib/make.wnt +++ b/contrib/idn/mdnkit/lib/make.wnt @@ -1,4 +1,4 @@ -# $Id: make.wnt,v 1.3 2001/06/09 00:30:16 tale Exp $ +# $Id: make.wnt,v 1.3.2.1 2002/02/08 12:14:03 marka Exp $ # Makefile for MDN library, manually configured for WIN-NT (VC5.0) # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. @@ -9,8 +9,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -75,6 +75,9 @@ HDRS = $(ICONVDIR)\iconv.h \ $(INCDIR)\mdn\amcacem.h \ $(INCDIR)\mdn\amcaceo.h \ $(INCDIR)\mdn\amcacer.h \ + $(INCDIR)\mdn\amcacev.h \ + $(INCDIR)\mdn\amcacew.h \ + $(INCDIR)\mdn\amcacez.h \ $(INCDIR)\mdn\api.h \ $(INCDIR)\mdn\assert.h \ $(INCDIR)\mdn\brace.h \ @@ -90,6 +93,7 @@ HDRS = $(ICONVDIR)\iconv.h \ $(INCDIR)\mdn\localencoding.h \ $(INCDIR)\mdn\log.h \ $(INCDIR)\mdn\logmacro.h \ + $(INCDIR)\mdn\mace.h \ $(INCDIR)\mdn\mapper.h \ $(INCDIR)\mdn\mapselector.h \ $(INCDIR)\mdn\msgheader.h \ @@ -112,24 +116,27 @@ HDRS = $(ICONVDIR)\iconv.h \ $(INCDIR)\mdn\util.h \ $(INCDIR)\mdn\version.h -SRCS = ace.c altdude.c amcacem.c amcaceo.c amcacer.c api.c \ +SRCS = ace.c altdude.c amcacem.c amcaceo.c amcacer.c \ + amcacev.c amcacew.c amcacez.c api.c \ brace.c checker.c converter.c \ debug.c delimitermap.c dn.c dude.c \ filechecker.c filemapper.c \ lace.c localencoding.c log.c \ - mapper.c mapselector.c msgheader.c msgtrans.c \ - nameprep.c normalizer.c \ + mace.c mapper.c mapselector.c msgheader.c msgtrans.c \ + nameprep.c nameprep_template.c nameprepdata.c normalizer.c \ race.c res.c resconf.c result.c \ selectiveencode.c strhash.c \ - ucsmap.c ucsset.c unicode.c unormalize.c \ + ucsmap.c ucsset.c unicode.c unicode_template.c \ + unicodedata_301.c unicodedata_310.c unormalize.c \ utf5.c utf6.c utf8.c util.c version.c -OBJS = ace.obj altdude.obj amcacem.obj amcaceo.obj amcacer.obj api.obj \ +OBJS = ace.obj altdude.obj amcacem.obj amcaceo.obj amcacer.obj \ + amcacev.obj amcacew.obj amcacez.obj api.obj \ brace.obj checker.obj converter.obj \ debug.obj delimitermap.obj dn.obj dude.obj \ filechecker.obj filemapper.obj \ lace.obj localencoding.obj log.obj \ - mapper.obj mapselector.obj msgheader.obj msgtrans.obj \ + mace.obj mapper.obj mapselector.obj msgheader.obj msgtrans.obj \ nameprep.obj normalizer.obj \ race.obj res.obj resconf.obj result.obj \ selectiveencode.obj strhash.obj \ @@ -157,16 +164,25 @@ libmdn.lib: $(OBJS) ace.obj: ace.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -altdude.obj: ace.c $(HDRS) +altdude.obj: altdude.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -amcacem.obj: ace.c $(HDRS) +amcacem.obj: amcacem.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -amcaceo.obj: ace.c $(HDRS) +amcaceo.obj: amcaceo.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -amcacer.obj: ace.c $(HDRS) +amcacer.obj: amcacer.c $(HDRS) + $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c + +amcacev.obj: amcacev.c $(HDRS) + $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c + +amcacew.obj: amcacew.c $(HDRS) + $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c + +amcacez.obj: amcacez.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c api.obj: api.c $(HDRS) @@ -208,6 +224,9 @@ localencoding.obj: localencoding.c $(HDRS) log.obj: log.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c +mace.obj: mace.c $(HDRS) + $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c + mapper.obj: mapper.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c @@ -250,7 +269,7 @@ ucsmap.obj: ucsmap.c $(HDRS) ucsset.obj: ucsset.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c -unicode.obj: unicode.c unicodedata.c $(HDRS) +unicode.obj: unicode.c unicode_template.c unicodedata_301.c unicodedata_310.c $(HDRS) $(cc) $(cflags) $(cvarsdll) -I$(INCDIR) -I$(ICONVDIR) $(DBG) $*.c unormalize.obj: unormalize.c $(HDRS) diff --git a/contrib/idn/mdnkit/lib/mapper.c b/contrib/idn/mdnkit/lib/mapper.c index 5e926d85..9371e2de 100644 --- a/contrib/idn/mdnkit/lib/mapper.c +++ b/contrib/idn/mdnkit/lib/mapper.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: mapper.c,v 1.1 2001/06/09 00:30:17 tale Exp $"; +static char *rcsid = "$Id: mapper.c,v 1.1.2.1 2002/02/08 12:14:04 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: mapper.c,v 1.1 2001/06/09 00:30:17 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -88,18 +88,27 @@ typedef struct { /* * Standard mapping schemes. */ -static const map_scheme_t nameprep_02_scheme = { - "nameprep-02", - "nameprep-02", +static const map_scheme_t nameprep_03_scheme = { + "nameprep-03", + "nameprep-03", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_mapproc, NULL, }; -static const map_scheme_t nameprep_03_scheme = { - "nameprep-03", - "nameprep-03", +static const map_scheme_t nameprep_05_scheme = { + "nameprep-05", + "nameprep-05", + mdn__nameprep_createproc, + mdn__nameprep_destroyproc, + mdn__nameprep_mapproc, + NULL, +}; + +static const map_scheme_t nameprep_06_scheme = { + "nameprep-06", + "nameprep-06", mdn__nameprep_createproc, mdn__nameprep_destroyproc, mdn__nameprep_mapproc, @@ -116,8 +125,9 @@ static const map_scheme_t filemap_scheme = { }; static const map_scheme_t *standard_map_schemes[] = { - &nameprep_02_scheme, &nameprep_03_scheme, + &nameprep_05_scheme, + &nameprep_06_scheme, &filemap_scheme, NULL, }; @@ -327,6 +337,9 @@ mdn_mapper_add(mdn_mapper_t ctx, const char *scheme_name) { ctx->schemes[ctx->nschemes].context = scheme_context; ctx->nschemes++; + if (buffer != static_buffer) + free(buffer); + return (mdn_success); failure: @@ -465,6 +478,8 @@ mdn_mapper_map(mdn_mapper_t ctx, const char *from, char *to, size_t tolen) { i++; } + free(dynamic_buffers[0]); + free(dynamic_buffers[1]); return (mdn_success); failure: diff --git a/contrib/idn/mdnkit/lib/mapselector.c b/contrib/idn/mdnkit/lib/mapselector.c index b2df0bc1..08044acb 100644 --- a/contrib/idn/mdnkit/lib/mapselector.c +++ b/contrib/idn/mdnkit/lib/mapselector.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: mapselector.c,v 1.1 2001/06/09 00:30:17 tale Exp $"; +static char *rcsid = "$Id: mapselector.c,v 1.1.2.1 2002/02/08 12:14:05 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: mapselector.c,v 1.1 2001/06/09 00:30:17 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/mdn.conf.sample.in b/contrib/idn/mdnkit/lib/mdn.conf.sample.in index 04503d79..43b9c456 100644 --- a/contrib/idn/mdnkit/lib/mdn.conf.sample.in +++ b/contrib/idn/mdnkit/lib/mdn.conf.sample.in @@ -1,4 +1,4 @@ -# $Id: mdn.conf.sample.in,v 1.1 2001/06/09 00:30:17 tale Exp $ +# $Id: mdn.conf.sample.in,v 1.1.2.1 2002/02/08 12:14:06 marka Exp $ # # Sample file for mDNkit version 2 resolver configuration file (mdn.conf). # @@ -10,16 +10,10 @@ # of multilingualized names by resolvers and DNS servers. Currently, the # following encodings are available: # -# RACE -# BRACE -# LACE +# AMC-ACE-Z # DUDE -# UTF-6 +# RACE # UTF-8 -# AltDUDE -# AMC-ACE-M -# AMC-ACE-O -# AMC-ACE-R # <codeset names your iconv_open() accepts> # # syntax) @@ -33,8 +27,10 @@ idn-encoding RACE # # nameprep-03 -- name preparation scheme described in the # IETF draft `idn-nameprep-03' -# nameprep-02 -- name preparation scheme described in the -# IETF draft `idn-nameprep-02' +# nameprep-05 -- name preparation scheme described in the +# IETF draft `idn-nameprep-05' +# nameprep-06 -- name preparation scheme described in the +# IETF draft `idn-nameprep-06' # # syntax) # nameprep <nameprep version> @@ -49,7 +45,7 @@ idn-encoding RACE # If both `nameprep' and more-specific entries (i.e. `nameprep-*' entries) # are specified, more-specific ones take precedence. # -nameprep nameprep-03 +nameprep nameprep-06 # # `nameprep-map' entry specifies the mapping scheme of NAMEPREP process. @@ -63,27 +59,26 @@ nameprep nameprep-03 # # If multiple schemes are specified, they are applied in turn. # -#nameprep-map nameprep-03 +#nameprep-map nameprep-06 # # `nameprep-normalize' entry specifies the normalization scheme of NAMEPREP # process. Avaialable normalization schemes are: # # <nameprep version> -- nameprep version -# ascii-lowercase -- ASCII uppercase letters to lowercase -# ascii-uppercase -- ASCII lowercase letters to uppercase -# unicode-lowercase -- Unicode uppercase letters to lowercase -# unicode-uppercase -- Unicode lowercase letters to uppercase -# unicode-foldcase -- Unicode case-folding. -# unicode-form-c -- Unicode normalization form C # unicode-form-kc -- Unicode normalization form KC +# defined by the latest standard. +# unicode-form-kc/3.0.1 -- Unicode normalization form KC +# defined by Unicode 3.0.1. +# unicode-form-kc/3.1.0 -- Unicode normalization form KC +# defined by Unicode 3.1. # # syntax) # nameprep-normalize <scheme> ... # # If multiple schemes are specified, they are applied in turn. # -#nameprep-normalize nameprep-03 +#nameprep-normalize nameprep-06 # # `nameprep-prohibit' entry specifies the prohibited characters in the @@ -97,7 +92,7 @@ nameprep nameprep-03 # # If multiple sets are specified, they are applied in turn. # -#nameprep-prohibit nameprep-03 +#nameprep-prohibit nameprep-06 # # `nameprep-unassigned' entry specifies the unassigned characters in the @@ -111,19 +106,7 @@ nameprep nameprep-03 # # If multiple sets are specified, they are applied in turn. # -#nameprep-unassigned nameprep-03 - -# -# `alternate-encoding' entry specifies the alternative encoding to use in -# case of the conversion from IDN encoding to the application's local -# encoding fails due to the lack of certain character in the character set -# of the local encoding. The alternative encoding must be ASCII compatible -# encoding (ACE). -# -# syntax) -# alternate-encoding <encoding> -# -alternate-encoding RACE +#nameprep-unassigned nameprep-06 # # `encoding-alias-file' specifies the file which defines encoding name diff --git a/contrib/idn/mdnkit/lib/msgheader.c b/contrib/idn/mdnkit/lib/msgheader.c index 9eb7dced..37dab3a0 100644 --- a/contrib/idn/mdnkit/lib/msgheader.c +++ b/contrib/idn/mdnkit/lib/msgheader.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: msgheader.c,v 1.7 2000/09/20 02:47:31 ishisone Exp $"; +static char *rcsid = "$Id: msgheader.c,v 1.1 2002/01/02 02:46:44 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: msgheader.c,v 1.7 2000/09/20 02:47:31 ishisone Exp $" * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/msgtrans.c b/contrib/idn/mdnkit/lib/msgtrans.c index e1294bdd..0b587c52 100644 --- a/contrib/idn/mdnkit/lib/msgtrans.c +++ b/contrib/idn/mdnkit/lib/msgtrans.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: msgtrans.c,v 1.24 2001/02/21 05:54:17 m-kasahr Exp $"; +static char *rcsid = "$Id: msgtrans.c,v 1.1 2002/01/02 02:46:45 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: msgtrans.c,v 1.24 2001/02/21 05:54:17 m-kasahr Exp $" * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -92,30 +92,19 @@ static char *rcsid = "$Id: msgtrans.c,v 1.24 2001/02/21 05:54:17 m-kasahr Exp $" #include <mdn/dn.h> #include <mdn/debug.h> -/* - * Name translation instructions. - * - * For query, perform - * 1. local encoding to UTF-8 conversion - * 2. delimiter mapping - * 3. local mapping - * 4. nameprep - * 5. UTF-8 to IDN encoding conversion - * - * For reply, - * 1. IDN encoding to UTF-8 conversion - * 2. UTF-8 to local encoding conversion - * - * See mdn/res.h for the mnemonic. - */ -#define INSN_QUERY "ldMNI" -#define INSN_REPLY "iL" - #define DNS_HEADER_SIZE 12 #define DNAME_SIZE 512 #define RRFORMAT_HASH_SIZE 47 /* + * Translation directions. + */ +enum { + transdir_query = 0, + transdir_reply = 1 +}; + +/* * DNS opcodes. */ enum { @@ -165,7 +154,7 @@ enum { }; typedef struct msgtrans_ctx { - char *insn; /* name translation instruction */ + int transdir; /* direction of translation */ const char *in; /* input message */ size_t in_len; /* length of it */ const char *in_ptr; /* current pointer */ @@ -209,6 +198,35 @@ static struct rrformat { }; static struct rrformat *rrformathash[RRFORMAT_HASH_SIZE]; +/* + * Name translation instructions. + * + * For query, perform + * 1. local encoding to UTF-8 conversion + * 2. delimiter mapping + * 3. local mapping + * 4. nameprep + * 5. UTF-8 to IDN encoding conversion + * + * For reply, + * 1. IDN encoding to UTF-8 conversion + * 2. UTF-8 to local encoding conversion + * + * See mdn/res.h for the mnemonic. + */ +static const char *trans_insn[] = { + "ldMNI", /* insn for QUERY (transdir_query) */ + "i!NL", /* insn for REPLY (transdir_reply) */ +}; + +/* + * Labels of translation directions, used for log messages. + */ +static const char *trans_labels[] = { + "QUERY", /* QUERY (transdir_query) */ + "REPLY", /* REPLY (transdir_reply) */ +}; + static mdn_result_t copy_header(msgtrans_ctx_t *ctx); static mdn_result_t translate_question(msgtrans_ctx_t *ctx); static mdn_result_t translate_rr(msgtrans_ctx_t *ctx); @@ -348,17 +366,33 @@ translate_question(msgtrans_ctx_t *ctx) { if ((r = get_domainname(ctx, qname, sizeof(qname))) != mdn_success) return (r); + INFO(("request of QNAME %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], mdn_debug_xstring(qname, 256))); + /* Translate QNAME. */ - r = mdn_res_nameconv(ctx->conf, ctx->insn, qname, + r = mdn_res_nameconv(ctx->conf, trans_insn[ctx->transdir], qname, qname_translated, sizeof(qname_translated)); if (r != mdn_success) - return (r); - - if ((r = put_domainname(ctx, qname_translated)) != mdn_success) - return (r); + goto failure; + r = put_domainname(ctx, qname_translated); + if (r != mdn_success) + goto failure; /* Copy QTYPE and QCLASS */ - return (copy_message(ctx, 4)); + r = copy_message(ctx, 4); + if (r != mdn_success) + goto failure; + + INFO(("result of QNAME %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], + mdn_debug_xstring(qname_translated, 256))); + + return (mdn_success); + +failure: + INFO(("QNAME %s translation failed, %s\n", + trans_labels[ctx->transdir], mdn_result_tostring(r))); + return (r); } static mdn_result_t @@ -373,18 +407,23 @@ translate_rr(msgtrans_ctx_t *ctx) { if ((r = get_domainname(ctx, dname, sizeof(dname))) != mdn_success) return (r); + INFO(("request of RR NAME %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], mdn_debug_xstring(dname, 256))); + /* Translate NAME. */ - r = mdn_res_nameconv(ctx->conf, ctx->insn, dname, + r = mdn_res_nameconv(ctx->conf, trans_insn[ctx->transdir], dname, dname_translated, sizeof(dname_translated)); if (r != mdn_success) - return (r); - - if ((r = put_domainname(ctx, dname_translated)) != mdn_success) - return (r); + goto failure; + r = put_domainname(ctx, dname_translated); + if (r != mdn_success) + goto failure; /* Get TYPE and CLASS */ - if (ctx->in_remain < 10) - return (mdn_invalid_message); + if (ctx->in_remain < 10) { + r = mdn_invalid_message; + goto failure; + } p = (unsigned char *)ctx->in_ptr; #define GET16(off) ((p[off]<<8)+p[(off)+1]) rr_type = GET16(0); @@ -393,23 +432,33 @@ translate_rr(msgtrans_ctx_t *ctx) { #undef GET16 /* Copy TYPE, CLASS, TTL and RDLENGTH. */ - if ((r = copy_message(ctx, 10)) != mdn_success) - return (r); + r = copy_message(ctx, 10); + if (r != mdn_success) + goto failure; /* Remember the current output length. */ length_before = output_length(ctx); /* Translate RDATA. */ r = translate_rdata(ctx, rr_type, rr_class, rr_length); + if (r != mdn_success) + goto failure; - if (r == mdn_success) { - /* Reset RDLENGTH */ - rr_length = output_length(ctx) - length_before; - ctx->out[length_before - 2] = (rr_length >> 8) & 0xff; - ctx->out[length_before - 1] = rr_length & 0xff; - } + /* Reset RDLENGTH */ + rr_length = output_length(ctx) - length_before; + ctx->out[length_before - 2] = (rr_length >> 8) & 0xff; + ctx->out[length_before - 1] = rr_length & 0xff; + + INFO(("result of RR NAME %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], + mdn_debug_xstring(dname_translated, 256))); return (r); + +failure: + INFO(("RR NAME %s translation failed, %s\n", + trans_labels[ctx->transdir], mdn_result_tostring(r))); + return (r); } static mdn_result_t @@ -510,16 +559,27 @@ translate_domain(msgtrans_ctx_t *ctx) { if ((r = get_domainname(ctx, dname, sizeof(dname))) != mdn_success) return (r); + INFO(("request of RDATA %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], mdn_debug_xstring(dname, 256))); + /* Translate NAME. */ - r = mdn_res_nameconv(ctx->conf, ctx->insn, dname, + r = mdn_res_nameconv(ctx->conf, trans_insn[ctx->transdir], dname, dname_translated, sizeof(dname_translated)); if (r != mdn_success) - return (r); - + goto failure; if ((r = put_domainname(ctx, dname_translated)) != mdn_success) - return (r); + goto failure; + + INFO(("result of RDATA %s translation: name=\"%s\"\n", + trans_labels[ctx->transdir], + mdn_debug_xstring(dname_translated, 256))); return (mdn_success); + +failure: + INFO(("RDATA %s translation failed, %s\n", + trans_labels[ctx->transdir], mdn_result_tostring(r))); + return (r); } static mdn_result_t @@ -554,7 +614,7 @@ static void ctx_init(msgtrans_ctx_t *ctx, mdn_resconf_t conf, mdn_msgheader_t *header, const char *msg, size_t msglen, char *outbuf, size_t outbufsize) { - ctx->insn = (header->qr == 0) ? INSN_QUERY : INSN_REPLY; + ctx->transdir = (header->qr == 0) ? transdir_query : transdir_reply; ctx->in = ctx->in_ptr = msg; ctx->in_len = ctx->in_remain = msglen; ctx->out = ctx->out_ptr = outbuf; diff --git a/contrib/idn/mdnkit/lib/nameprep.c b/contrib/idn/mdnkit/lib/nameprep.c index 6ef51648..2fc8c71f 100644 --- a/contrib/idn/mdnkit/lib/nameprep.c +++ b/contrib/idn/mdnkit/lib/nameprep.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $"; +static char *rcsid = "$Id: nameprep.c,v 1.1.2.1 2002/02/08 12:14:10 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -79,7 +79,7 @@ static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $"; /* * The latest version. */ -#define NAMEPREP_CURRENT "nameprep-03" +#define NAMEPREP_CURRENT "nameprep-05" /* * Load NAMEPREP compiled tables. @@ -90,16 +90,20 @@ static char *rcsid = "$Id: nameprep.c,v 1.1 2001/06/09 00:30:19 tale Exp $"; * Define mapping/checking functions for each version of the draft. */ -#define VERSION id02 +#define VERSION id03 #include "nameprep_template.c" #undef VERSION -#define VERSION id03 +#define VERSION id05 +#include "nameprep_template.c" +#undef VERSION + +#define VERSION id06 #include "nameprep_template.c" #undef VERSION -typedef char *(*nameprep_mapproc)(unsigned long v); -typedef int (*nameprep_checkproc)(unsigned long v); +typedef const char *(*nameprep_mapproc)(unsigned long v); +typedef int (*nameprep_checkproc)(unsigned long v); static struct mdn_nameprep { char *version; @@ -112,8 +116,9 @@ static struct mdn_nameprep { compose_sym2(nameprep_map_, id), \ compose_sym2(nameprep_prohibited_, id), \ compose_sym2(nameprep_unassigned_, id) } - MAKE_NAMEPREP_HANDLE("nameprep-02", id02), MAKE_NAMEPREP_HANDLE("nameprep-03", id03), + MAKE_NAMEPREP_HANDLE("nameprep-05", id05), + MAKE_NAMEPREP_HANDLE("nameprep-06", id06), { NULL, NULL, NULL }, }; @@ -170,7 +175,7 @@ mdn_nameprep_map(mdn_nameprep_t handle, const char *from, while (fromlen > 0) { unsigned long v; int w; - char *mapped; + const char *mapped; if ((w = mdn_utf8_getwc(from, fromlen, &v)) == 0) return (mdn_invalid_encoding); diff --git a/contrib/idn/mdnkit/lib/nameprep_template.c b/contrib/idn/mdnkit/lib/nameprep_template.c index 543fd782..80f93e9d 100644 --- a/contrib/idn/mdnkit/lib/nameprep_template.c +++ b/contrib/idn/mdnkit/lib/nameprep_template.c @@ -1,4 +1,4 @@ -/* $Id: nameprep_template.c,v 1.1 2001/06/09 00:30:19 tale Exp $ */ +/* $Id: nameprep_template.c,v 1.1.2.1 2002/02/08 12:14:11 marka Exp $ */ /* * Copyright (c) 2001 Japan Network Information Center. All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -86,7 +86,7 @@ #endif /* NAMEPREP_TEMPLATE_INIT */ -static char * +static const char * compose_sym2(nameprep_map_, VERSION) (unsigned long v) { int idx0 = IDX0(MAP, v); int idx1 = IDX1(MAP, v); @@ -99,7 +99,7 @@ compose_sym2(nameprep_map_, VERSION) (unsigned long v) { offset = TABLE[IMAP[IMAP[idx0] + idx1]].tbl[idx2]; if (offset == 0) return (NULL); /* no mapping */ - return (char *)(DATA + offset); + return (const char *)(DATA + offset); #undef IMAP #undef TABLE #undef DATA @@ -110,7 +110,7 @@ compose_sym2(nameprep_prohibited_, VERSION) (unsigned long v) { int idx0 = IDX0(PROH, v); int idx1 = IDX1(PROH, v); int idx2 = IDX2(PROH, v); - unsigned char *bm; + const unsigned char *bm; #define IMAP compose_sym3(nameprep_, VERSION, _prohibited_imap) #define BITMAP compose_sym3(nameprep_, VERSION, _prohibited_bitmap) @@ -125,7 +125,7 @@ compose_sym2(nameprep_unassigned_, VERSION) (unsigned long v) { int idx0 = IDX0(UNAS, v); int idx1 = IDX1(UNAS, v); int idx2 = IDX2(UNAS, v); - unsigned char *bm; + const unsigned char *bm; #define IMAP compose_sym3(nameprep_, VERSION, _unassigned_imap) #define BITMAP compose_sym3(nameprep_, VERSION, _unassigned_bitmap) diff --git a/contrib/idn/mdnkit/lib/nameprepdata.c b/contrib/idn/mdnkit/lib/nameprepdata.c index 67b164de..0f64322c 100644 --- a/contrib/idn/mdnkit/lib/nameprepdata.c +++ b/contrib/idn/mdnkit/lib/nameprepdata.c @@ -1,5 +1,5 @@ -/* $Id: nameprepdata.c,v 1.1 2001/06/09 00:30:19 tale Exp $ */ -/* $-Id: generate_nameprep_data.pl,v 1.2 2001/03/05 09:04:36 ishisone Exp -$ */ +/* $Id: nameprepdata.c,v 1.1.2.1 2002/02/08 12:14:13 marka Exp $ */ +/* $-Id: generate_nameprep_data.pl,v 1.5 2001/10/31 08:51:30 m-kasahr Exp -$ */ /* * Do not edit this file! * This file is generated from NAMEPREP specification. @@ -17,7 +17,7 @@ #define UNAS_BITS_1 7 #define UNAS_BITS_2 7 -static unsigned short nameprep_id02_map_imap[] = { +static const unsigned short nameprep_id03_map_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 912, 784, 784, 784, 784, 784, 784, 784, 784, @@ -150,9 +150,9 @@ static unsigned short nameprep_id02_map_imap[] = { 0, 60, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned short tbl[32]; -} nameprep_id02_map_table[] = { +} nameprep_id03_map_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -460,7 +460,7 @@ static struct { }}, }; -static unsigned char nameprep_id02_map_data[] = { +static const unsigned char nameprep_id03_map_data[] = { 0, 97, 0, 98, 0, 99, 0, 100, 0, 101, 0, 102, 0, 103, 0, 104, 0, 105, 0, 106, 0, 107, 0, 108, 0, 109, 0, 110, 0, 111, 0, 112, 0, 113, 0, 114, @@ -697,7 +697,7 @@ static unsigned char nameprep_id02_map_data[] = { 0, }; -static unsigned short nameprep_id02_prohibited_imap[] = { +static const unsigned short nameprep_id03_prohibited_imap[] = { 68, 196, 196, 324, 196, 196, 196, 452, 196, 196, 196, 452, 196, 196, 196, 452, 196, 196, 196, 452, 196, 196, 196, 452, @@ -718,7 +718,7 @@ static unsigned short nameprep_id02_prohibited_imap[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 5, 3, 2, 2, 2, + 2, 2, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -744,17 +744,17 @@ static unsigned short nameprep_id02_prohibited_imap[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 2, 2, + 2, 2, 2, 2, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 7, 2, 2, 2, 2, + 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -770,28 +770,28 @@ static unsigned short nameprep_id02_prohibited_imap[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 8, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, + 2, 2, 2, 9, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, }; -static struct { +static const struct { unsigned char bm[16]; -} nameprep_id02_prohibited_bitmap[] = { +} nameprep_id03_prohibited_bitmap[] = { {{ 255,255,255,255,255,223, 0,252, 1, 0, 0,248, 1, 0, 0,248, }}, @@ -811,6 +811,9 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, }}, {{ + 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, }}, {{ @@ -820,7 +823,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, }}, }; -static unsigned short nameprep_id02_unassigned_imap[] = { +static const unsigned short nameprep_id03_unassigned_imap[] = { 68, 196, 324, 452, 580, 580, 580, 708, 580, 580, 580, 708, 580, 580, 580, 708, 580, 580, 580, 708, 580, 580, 580, 708, @@ -944,9 +947,9 @@ static unsigned short nameprep_id02_unassigned_imap[] = { 0, 0, 0, 0, }; -static struct { +static const struct { unsigned char bm[16]; -} nameprep_id02_unassigned_bitmap[] = { +} nameprep_id03_unassigned_bitmap[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }}, @@ -1173,7 +1176,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, }}, {{ - 0, 0, 3, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,240, + 0, 0, 3, 0, 0, 0, 0, 0, 0,255,255,255,255,255, 0,240, }}, {{ 255,255,255,255,240,255, 0, 0,224, 1, 8, 0,128,240, 40, 0, @@ -1191,32 +1194,886 @@ static struct { 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 63, }}, }; -#define nameprep_id03_map_imap nameprep_id02_map_imap -#define nameprep_id03_map_table nameprep_id02_map_table -#define nameprep_id03_map_data nameprep_id02_map_data +static const unsigned short nameprep_id05_map_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 912, + 1040, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 1168, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 0, 1, 0, 0, 2, 3, 0, + 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 15, 16, 17, 18, 19, + 20, 21, 0, 22, 23, 24, 25, 26, + 0, 27, 28, 0, 29, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, + 47, 0, 0, 0, 0, 48, 0, 0, + 49, 50, 0, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 55, 56, 57, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 58, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 59, + 0, 60, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 61, 62, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 63, 64, 65, + 66, 76, 77, 69, 70, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; -static unsigned short nameprep_id03_prohibited_imap[] = { +static const struct { + unsigned short tbl[32]; +} nameprep_id05_map_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, + 43, 45, 47, 49, 51, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, + 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, + 123, 0, 126, 129, 132, 135, 138, 141, 144, 147, + }}, + {{ + 150, 0, 153, 0, 156, 0, 159, 0, 162, 0, 165, + 0, 168, 0, 171, 0, 174, 0, 177, 0, 180, 0, + 183, 0, 186, 0, 189, 0, 192, 0, 195, 0, + }}, + {{ + 198, 0, 201, 0, 204, 0, 207, 0, 210, 0, 213, + 0, 216, 0, 219, 0, 17, 17, 222, 0, 225, 0, + 228, 0, 0, 231, 0, 234, 0, 237, 0, 240, + }}, + {{ + 0, 243, 0, 246, 0, 249, 0, 252, 0, 255, 259, + 0, 262, 0, 265, 0, 268, 0, 271, 0, 274, 0, + 277, 0, 280, 0, 283, 0, 286, 0, 289, 0, + }}, + {{ + 292, 0, 295, 0, 298, 0, 301, 0, 304, 0, 307, + 0, 310, 0, 313, 0, 316, 0, 319, 0, 322, 0, + 325, 0, 328, 331, 0, 334, 0, 337, 0, 37, + }}, + {{ + 0, 340, 343, 0, 346, 0, 349, 352, 0, 355, 358, + 361, 0, 0, 364, 367, 370, 373, 0, 376, 379, 0, + 382, 385, 388, 0, 0, 0, 391, 394, 0, 397, + }}, + {{ + 400, 0, 403, 0, 406, 0, 409, 412, 0, 415, 0, + 0, 418, 0, 421, 424, 0, 427, 430, 433, 0, 436, + 0, 439, 442, 0, 0, 0, 445, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 448, 448, 0, 451, 451, 0, 454, + 454, 0, 457, 0, 460, 0, 463, 0, 466, 0, 469, + 0, 472, 0, 475, 0, 478, 0, 0, 481, 0, + }}, + {{ + 484, 0, 487, 0, 490, 0, 493, 0, 496, 0, 499, + 0, 502, 0, 505, 0, 508, 512, 512, 0, 515, 0, + 518, 521, 524, 0, 527, 0, 530, 0, 533, 0, + }}, + {{ + 536, 0, 539, 0, 542, 0, 545, 0, 548, 0, 551, + 0, 554, 0, 557, 0, 560, 0, 563, 0, 566, 0, + 569, 0, 572, 0, 575, 0, 578, 0, 581, 0, + }}, + {{ + 0, 0, 584, 0, 587, 0, 590, 0, 593, 0, 596, + 0, 599, 0, 602, 0, 605, 0, 608, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 611, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 614, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 618, 0, 621, 624, 627, + 0, 630, 0, 633, 636, 639, 646, 649, 652, 655, 658, + 661, 664, 667, 611, 670, 673, 54, 676, 679, 682, + }}, + {{ + 685, 688, 0, 691, 694, 697, 700, 703, 706, 709, 712, + 715, 0, 0, 0, 0, 718, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 691, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 649, 667, 697, 633, 715, 700, + 685, 0, 0, 0, 725, 0, 728, 0, 731, 0, + }}, + {{ + 734, 0, 737, 0, 740, 0, 743, 0, 746, 0, 749, + 0, 752, 0, 755, 0, 670, 688, 691, 0, 667, 658, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 758, 761, 764, 767, 770, 773, 776, 779, 782, 785, 788, + 791, 794, 797, 800, 803, 806, 809, 812, 815, 818, 821, + 824, 827, 830, 833, 836, 839, 842, 845, 848, 851, + }}, + {{ + 854, 857, 860, 863, 866, 869, 872, 875, 878, 881, 884, + 887, 890, 893, 896, 899, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 902, 0, 905, 0, 908, 0, 911, 0, 914, 0, 917, + 0, 920, 0, 923, 0, 926, 0, 929, 0, 932, 0, + 935, 0, 938, 0, 941, 0, 944, 0, 947, 0, + }}, + {{ + 950, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 953, 0, 956, 0, 959, 0, 962, 0, 965, 0, + 968, 0, 971, 0, 974, 0, 977, 0, 980, 0, + }}, + {{ + 983, 0, 986, 0, 989, 0, 992, 0, 995, 0, 998, + 0, 1001, 0, 1004, 0, 1007, 0, 1010, 0, 1013, 0, + 1016, 0, 1019, 0, 1022, 0, 1025, 0, 1028, 0, + }}, + {{ + 0, 1031, 0, 1034, 0, 0, 0, 1037, 0, 0, 0, + 1040, 0, 0, 0, 0, 1043, 0, 1046, 0, 1049, 0, + 1052, 0, 1055, 0, 1058, 0, 1061, 0, 1064, 0, + }}, + {{ + 1067, 0, 1070, 0, 1073, 0, 1076, 0, 1079, 0, 1082, + 0, 1085, 0, 1088, 0, 1091, 0, 1094, 0, 1097, 0, + 0, 0, 1100, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1103, 1106, 1109, 1112, 1115, + 1118, 1121, 1124, 1127, 1130, 1133, 1136, 1139, 1142, 1145, + }}, + {{ + 1148, 1151, 1154, 1157, 1160, 1163, 1166, 1169, 1172, 1175, 1178, + 1181, 1184, 1187, 1190, 1193, 1196, 1199, 1202, 1205, 1208, 1211, + 1214, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 1217, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1222, 0, 1226, 0, 1230, 0, 1234, 0, 1238, 0, 1242, + 0, 1246, 0, 1250, 0, 1254, 0, 1258, 0, 1262, 0, + 1266, 0, 1270, 0, 1274, 0, 1278, 0, 1282, 0, + }}, + {{ + 1286, 0, 1290, 0, 1294, 0, 1298, 0, 1302, 0, 1306, + 0, 1310, 0, 1314, 0, 1318, 0, 1322, 0, 1326, 0, + 1330, 0, 1334, 0, 1338, 0, 1342, 0, 1346, 0, + }}, + {{ + 1350, 0, 1354, 0, 1358, 0, 1362, 0, 1366, 0, 1370, + 0, 1374, 0, 1378, 0, 1382, 0, 1386, 0, 1390, 0, + 1394, 0, 1398, 0, 1402, 0, 1406, 0, 1410, 0, + }}, + {{ + 1414, 0, 1418, 0, 1422, 0, 1426, 0, 1430, 0, 1434, + 0, 1438, 0, 1442, 0, 1446, 0, 1450, 0, 1454, 0, + 1458, 0, 1462, 0, 1466, 0, 1470, 0, 1474, 0, + }}, + {{ + 1478, 0, 1482, 0, 1486, 0, 1490, 0, 1494, 0, 1498, + 0, 1502, 0, 1506, 0, 1510, 0, 1514, 0, 1518, 0, + 1522, 1526, 1530, 1534, 1538, 1414, 0, 0, 0, 0, + }}, + {{ + 1542, 0, 1546, 0, 1550, 0, 1554, 0, 1558, 0, 1562, + 0, 1566, 0, 1570, 0, 1574, 0, 1578, 0, 1582, 0, + 1586, 0, 1590, 0, 1594, 0, 1598, 0, 1602, 0, + }}, + {{ + 1606, 0, 1610, 0, 1614, 0, 1618, 0, 1622, 0, 1626, + 0, 1630, 0, 1634, 0, 1638, 0, 1642, 0, 1646, 0, + 1650, 0, 1654, 0, 1658, 0, 1662, 0, 1666, 0, + }}, + {{ + 1670, 0, 1674, 0, 1678, 0, 1682, 0, 1686, 0, 1690, + 0, 1694, 0, 1698, 0, 1702, 0, 1706, 0, 1710, 0, + 1714, 0, 1718, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1722, 1726, 1730, + 1734, 1738, 1742, 1746, 1750, 0, 0, 0, 0, 0, 0, + 0, 0, 1754, 1758, 1762, 1766, 1770, 1774, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1778, 1782, 1786, + 1790, 1794, 1798, 1802, 1806, 0, 0, 0, 0, 0, 0, + 0, 0, 1810, 1814, 1818, 1822, 1826, 1830, 1834, 1838, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1842, 1846, 1850, + 1854, 1858, 1862, 0, 0, 1866, 0, 1871, 0, 1878, 0, + 1885, 0, 0, 1892, 0, 1896, 0, 1900, 0, 1904, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1908, 1912, 1916, + 1920, 1924, 1928, 1932, 1936, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1940, 1946, 1952, 1958, 1964, 1970, 1976, 1982, 1940, 1946, 1952, + 1958, 1964, 1970, 1976, 1982, 1988, 1994, 2000, 2006, 2012, 2018, + 2024, 2030, 1988, 1994, 2000, 2006, 2012, 2018, 2024, 2030, + }}, + {{ + 2036, 2042, 2048, 2054, 2060, 2066, 2072, 2078, 2036, 2042, 2048, + 2054, 2060, 2066, 2072, 2078, 0, 0, 2084, 2090, 2095, 0, + 2100, 2105, 2112, 2116, 2120, 2124, 2090, 0, 611, 0, + }}, + {{ + 0, 0, 2128, 2134, 2139, 0, 2144, 2149, 2156, 2160, 2164, + 2168, 2134, 0, 0, 0, 0, 0, 2172, 639, 0, 0, + 2179, 2184, 2191, 2195, 2199, 2203, 0, 0, 0, 0, + }}, + {{ + 0, 0, 2207, 718, 2214, 0, 2219, 2224, 2231, 2235, 2239, + 2243, 2247, 0, 0, 0, 0, 0, 2251, 2257, 2262, 0, + 2267, 2272, 2279, 2283, 2287, 2291, 2257, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 53, 53, 53, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 2295, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 5, 2298, 0, 0, 0, 370, 0, 2302, 0, + 15, 15, 15, 0, 0, 17, 17, 23, 0, 0, 27, + 2306, 0, 0, 31, 33, 35, 35, 35, 0, 0, + }}, + {{ + 2309, 2312, 2316, 0, 51, 0, 709, 0, 51, 0, 21, + 72, 3, 5, 0, 0, 9, 11, 0, 25, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2319, 2323, 2327, 2331, 2335, 2339, 2343, 2347, 2351, 2355, 2359, + 2363, 2367, 2371, 2375, 2379, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2383, 2387, 2391, 2395, 2399, 2403, 2407, 2411, 2415, 2419, + }}, + {{ + 2423, 2427, 2431, 2435, 2439, 2443, 2447, 2451, 2455, 2459, 2463, + 2467, 2471, 2475, 2479, 2483, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2487, 0, 2491, 0, 2494, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2497, 2500, 2503, 2507, 2510, 2513, 2516, 2519, 0, 0, 2522, + 2525, 2528, 0, 0, 0, 2532, 2535, 2539, 2543, 2547, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2497, 2551, + 2555, 2559, 0, 0, 0, 0, 0, 0, 0, 2563, 2566, + 2569, 2573, 2576, 2573, 2579, 2582, 2585, 2589, 2592, 2589, + }}, + {{ + 2595, 2599, 0, 2603, 0, 0, 2606, 2613, 2617, 2620, 0, + 2623, 0, 2626, 2629, 0, 0, 0, 0, 0, 0, 0, + 0, 2632, 0, 2635, 2639, 0, 2642, 2645, 0, 0, + }}, + {{ + 2648, 2651, 2654, 2657, 2661, 2665, 2665, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2668, 2673, 2678, + 2683, 2688, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, + }}, + {{ + 0, 2693, 2697, 2701, 2705, 2709, 2713, 2717, 2721, 2725, 2729, + 2733, 2737, 2741, 2745, 2749, 2753, 2757, 2761, 2765, 2769, 2773, + 2777, 2781, 2785, 2789, 2793, 0, 0, 0, 0, 0, + }}, + {{ + 2797, 2802, 2807, 2812, 2817, 2822, 2827, 2832, 2837, 2842, 2847, + 2852, 2857, 2862, 2867, 2872, 2877, 2882, 2887, 2892, 2897, 2902, + 2907, 2912, 2917, 2922, 2927, 2932, 2937, 2942, 2947, 2952, + }}, + {{ + 2957, 2962, 2967, 2972, 2977, 2982, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, + 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, + 45, 47, 49, 51, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, + 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, + }}, + {{ + 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, + 47, 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 5, + 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, + 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, + }}, + {{ + 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 5, 7, + }}, + {{ + 0, 0, 13, 0, 0, 19, 21, 0, 0, 27, 29, + 31, 33, 0, 37, 39, 41, 43, 45, 47, 49, 51, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1, 3, 5, 7, 9, 11, + 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, + }}, + {{ + 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 1, 3, 0, 7, 9, 11, 13, + 0, 0, 19, 21, 23, 25, 27, 29, 31, 33, 0, + 37, 39, 41, 43, 45, 47, 49, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 3, 0, 7, 9, 11, 13, 0, + }}, + {{ + 17, 19, 21, 23, 25, 0, 29, 0, 0, 0, 37, + 39, 41, 43, 45, 47, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, + }}, + {{ + 41, 43, 45, 47, 49, 51, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 49, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 3, 5, 7, + }}, + {{ + 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, + 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 646, 649, 652, + 655, 658, 661, 664, 667, 611, 670, 673, 54, 676, 679, + 682, 685, 688, 667, 691, 694, 697, 700, 703, 706, + }}, + {{ + 709, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 691, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 646, 649, 652, 655, 658, 661, 664, 667, 611, + 670, 673, 54, 676, 679, 682, 685, 688, 667, 691, 694, + 697, 700, 703, 706, 709, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 691, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 646, 649, 652, 655, + }}, + {{ + 658, 661, 664, 667, 611, 670, 673, 54, 676, 679, 682, + 685, 688, 667, 691, 694, 697, 700, 703, 706, 709, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 691, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 646, 649, 652, 655, 658, 661, 664, 667, 611, 670, + }}, + {{ + 673, 54, 676, 679, 682, 685, 688, 667, 691, 694, 697, + 700, 703, 706, 709, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 691, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 646, 649, 652, 655, 658, 661, + 664, 667, 611, 670, 673, 54, 676, 679, 682, 685, + }}, + {{ + 688, 667, 691, 694, 697, 700, 703, 706, 709, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 691, 0, 0, 0, 0, + }}, +}; + +static const unsigned char nameprep_id05_map_data[] = { + 0, 97, 0, 98, 0, 99, 0, 100, 0, 101, 0, 102, + 0, 103, 0, 104, 0, 105, 0, 106, 0, 107, 0, 108, + 0, 109, 0, 110, 0, 111, 0, 112, 0, 113, 0, 114, + 0, 115, 0, 116, 0, 117, 0, 118, 0, 119, 0, 120, + 0, 121, 0, 122, 0, 0, 206, 188, 0, 195, 160, 0, + 195, 161, 0, 195, 162, 0, 195, 163, 0, 195, 164, 0, + 195, 165, 0, 195, 166, 0, 195, 167, 0, 195, 168, 0, + 195, 169, 0, 195, 170, 0, 195, 171, 0, 195, 172, 0, + 195, 173, 0, 195, 174, 0, 195, 175, 0, 195, 176, 0, + 195, 177, 0, 195, 178, 0, 195, 179, 0, 195, 180, 0, + 195, 181, 0, 195, 182, 0, 195, 184, 0, 195, 185, 0, + 195, 186, 0, 195, 187, 0, 195, 188, 0, 195, 189, 0, + 195, 190, 0, 115, 115, 0, 196, 129, 0, 196, 131, 0, + 196, 133, 0, 196, 135, 0, 196, 137, 0, 196, 139, 0, + 196, 141, 0, 196, 143, 0, 196, 145, 0, 196, 147, 0, + 196, 149, 0, 196, 151, 0, 196, 153, 0, 196, 155, 0, + 196, 157, 0, 196, 159, 0, 196, 161, 0, 196, 163, 0, + 196, 165, 0, 196, 167, 0, 196, 169, 0, 196, 171, 0, + 196, 173, 0, 196, 175, 0, 196, 179, 0, 196, 181, 0, + 196, 183, 0, 196, 186, 0, 196, 188, 0, 196, 190, 0, + 197, 128, 0, 197, 130, 0, 197, 132, 0, 197, 134, 0, + 197, 136, 0, 202, 188, 110, 0, 197, 139, 0, 197, 141, + 0, 197, 143, 0, 197, 145, 0, 197, 147, 0, 197, 149, + 0, 197, 151, 0, 197, 153, 0, 197, 155, 0, 197, 157, + 0, 197, 159, 0, 197, 161, 0, 197, 163, 0, 197, 165, + 0, 197, 167, 0, 197, 169, 0, 197, 171, 0, 197, 173, + 0, 197, 175, 0, 197, 177, 0, 197, 179, 0, 197, 181, + 0, 197, 183, 0, 195, 191, 0, 197, 186, 0, 197, 188, + 0, 197, 190, 0, 201, 147, 0, 198, 131, 0, 198, 133, + 0, 201, 148, 0, 198, 136, 0, 201, 150, 0, 201, 151, + 0, 198, 140, 0, 199, 157, 0, 201, 153, 0, 201, 155, + 0, 198, 146, 0, 201, 160, 0, 201, 163, 0, 201, 169, + 0, 201, 168, 0, 198, 153, 0, 201, 175, 0, 201, 178, + 0, 201, 181, 0, 198, 161, 0, 198, 163, 0, 198, 165, + 0, 202, 128, 0, 198, 168, 0, 202, 131, 0, 198, 173, + 0, 202, 136, 0, 198, 176, 0, 202, 138, 0, 202, 139, + 0, 198, 180, 0, 198, 182, 0, 202, 146, 0, 198, 185, + 0, 198, 189, 0, 199, 134, 0, 199, 137, 0, 199, 140, + 0, 199, 142, 0, 199, 144, 0, 199, 146, 0, 199, 148, + 0, 199, 150, 0, 199, 152, 0, 199, 154, 0, 199, 156, + 0, 199, 159, 0, 199, 161, 0, 199, 163, 0, 199, 165, + 0, 199, 167, 0, 199, 169, 0, 199, 171, 0, 199, 173, + 0, 199, 175, 0, 106, 204, 140, 0, 199, 179, 0, 199, + 181, 0, 198, 149, 0, 198, 191, 0, 199, 185, 0, 199, + 187, 0, 199, 189, 0, 199, 191, 0, 200, 129, 0, 200, + 131, 0, 200, 133, 0, 200, 135, 0, 200, 137, 0, 200, + 139, 0, 200, 141, 0, 200, 143, 0, 200, 145, 0, 200, + 147, 0, 200, 149, 0, 200, 151, 0, 200, 153, 0, 200, + 155, 0, 200, 157, 0, 200, 159, 0, 200, 163, 0, 200, + 165, 0, 200, 167, 0, 200, 169, 0, 200, 171, 0, 200, + 173, 0, 200, 175, 0, 200, 177, 0, 200, 179, 0, 206, + 185, 0, 32, 206, 185, 0, 206, 172, 0, 206, 173, 0, + 206, 174, 0, 206, 175, 0, 207, 140, 0, 207, 141, 0, + 207, 142, 0, 206, 185, 204, 136, 204, 129, 0, 206, 177, + 0, 206, 178, 0, 206, 179, 0, 206, 180, 0, 206, 181, + 0, 206, 182, 0, 206, 183, 0, 206, 184, 0, 206, 186, + 0, 206, 187, 0, 206, 189, 0, 206, 190, 0, 206, 191, + 0, 207, 128, 0, 207, 129, 0, 207, 131, 0, 207, 132, + 0, 207, 133, 0, 207, 134, 0, 207, 135, 0, 207, 136, + 0, 207, 137, 0, 207, 138, 0, 207, 139, 0, 207, 133, + 204, 136, 204, 129, 0, 207, 155, 0, 207, 157, 0, 207, + 159, 0, 207, 161, 0, 207, 163, 0, 207, 165, 0, 207, + 167, 0, 207, 169, 0, 207, 171, 0, 207, 173, 0, 207, + 175, 0, 209, 144, 0, 209, 145, 0, 209, 146, 0, 209, + 147, 0, 209, 148, 0, 209, 149, 0, 209, 150, 0, 209, + 151, 0, 209, 152, 0, 209, 153, 0, 209, 154, 0, 209, + 155, 0, 209, 156, 0, 209, 157, 0, 209, 158, 0, 209, + 159, 0, 208, 176, 0, 208, 177, 0, 208, 178, 0, 208, + 179, 0, 208, 180, 0, 208, 181, 0, 208, 182, 0, 208, + 183, 0, 208, 184, 0, 208, 185, 0, 208, 186, 0, 208, + 187, 0, 208, 188, 0, 208, 189, 0, 208, 190, 0, 208, + 191, 0, 209, 128, 0, 209, 129, 0, 209, 130, 0, 209, + 131, 0, 209, 132, 0, 209, 133, 0, 209, 134, 0, 209, + 135, 0, 209, 136, 0, 209, 137, 0, 209, 138, 0, 209, + 139, 0, 209, 140, 0, 209, 141, 0, 209, 142, 0, 209, + 143, 0, 209, 161, 0, 209, 163, 0, 209, 165, 0, 209, + 167, 0, 209, 169, 0, 209, 171, 0, 209, 173, 0, 209, + 175, 0, 209, 177, 0, 209, 179, 0, 209, 181, 0, 209, + 183, 0, 209, 185, 0, 209, 187, 0, 209, 189, 0, 209, + 191, 0, 210, 129, 0, 210, 141, 0, 210, 143, 0, 210, + 145, 0, 210, 147, 0, 210, 149, 0, 210, 151, 0, 210, + 153, 0, 210, 155, 0, 210, 157, 0, 210, 159, 0, 210, + 161, 0, 210, 163, 0, 210, 165, 0, 210, 167, 0, 210, + 169, 0, 210, 171, 0, 210, 173, 0, 210, 175, 0, 210, + 177, 0, 210, 179, 0, 210, 181, 0, 210, 183, 0, 210, + 185, 0, 210, 187, 0, 210, 189, 0, 210, 191, 0, 211, + 130, 0, 211, 132, 0, 211, 136, 0, 211, 140, 0, 211, + 145, 0, 211, 147, 0, 211, 149, 0, 211, 151, 0, 211, + 153, 0, 211, 155, 0, 211, 157, 0, 211, 159, 0, 211, + 161, 0, 211, 163, 0, 211, 165, 0, 211, 167, 0, 211, + 169, 0, 211, 171, 0, 211, 173, 0, 211, 175, 0, 211, + 177, 0, 211, 179, 0, 211, 181, 0, 211, 185, 0, 213, + 161, 0, 213, 162, 0, 213, 163, 0, 213, 164, 0, 213, + 165, 0, 213, 166, 0, 213, 167, 0, 213, 168, 0, 213, + 169, 0, 213, 170, 0, 213, 171, 0, 213, 172, 0, 213, + 173, 0, 213, 174, 0, 213, 175, 0, 213, 176, 0, 213, + 177, 0, 213, 178, 0, 213, 179, 0, 213, 180, 0, 213, + 181, 0, 213, 182, 0, 213, 183, 0, 213, 184, 0, 213, + 185, 0, 213, 186, 0, 213, 187, 0, 213, 188, 0, 213, + 189, 0, 213, 190, 0, 213, 191, 0, 214, 128, 0, 214, + 129, 0, 214, 130, 0, 214, 131, 0, 214, 132, 0, 214, + 133, 0, 214, 134, 0, 213, 165, 214, 130, 0, 225, 184, + 129, 0, 225, 184, 131, 0, 225, 184, 133, 0, 225, 184, + 135, 0, 225, 184, 137, 0, 225, 184, 139, 0, 225, 184, + 141, 0, 225, 184, 143, 0, 225, 184, 145, 0, 225, 184, + 147, 0, 225, 184, 149, 0, 225, 184, 151, 0, 225, 184, + 153, 0, 225, 184, 155, 0, 225, 184, 157, 0, 225, 184, + 159, 0, 225, 184, 161, 0, 225, 184, 163, 0, 225, 184, + 165, 0, 225, 184, 167, 0, 225, 184, 169, 0, 225, 184, + 171, 0, 225, 184, 173, 0, 225, 184, 175, 0, 225, 184, + 177, 0, 225, 184, 179, 0, 225, 184, 181, 0, 225, 184, + 183, 0, 225, 184, 185, 0, 225, 184, 187, 0, 225, 184, + 189, 0, 225, 184, 191, 0, 225, 185, 129, 0, 225, 185, + 131, 0, 225, 185, 133, 0, 225, 185, 135, 0, 225, 185, + 137, 0, 225, 185, 139, 0, 225, 185, 141, 0, 225, 185, + 143, 0, 225, 185, 145, 0, 225, 185, 147, 0, 225, 185, + 149, 0, 225, 185, 151, 0, 225, 185, 153, 0, 225, 185, + 155, 0, 225, 185, 157, 0, 225, 185, 159, 0, 225, 185, + 161, 0, 225, 185, 163, 0, 225, 185, 165, 0, 225, 185, + 167, 0, 225, 185, 169, 0, 225, 185, 171, 0, 225, 185, + 173, 0, 225, 185, 175, 0, 225, 185, 177, 0, 225, 185, + 179, 0, 225, 185, 181, 0, 225, 185, 183, 0, 225, 185, + 185, 0, 225, 185, 187, 0, 225, 185, 189, 0, 225, 185, + 191, 0, 225, 186, 129, 0, 225, 186, 131, 0, 225, 186, + 133, 0, 225, 186, 135, 0, 225, 186, 137, 0, 225, 186, + 139, 0, 225, 186, 141, 0, 225, 186, 143, 0, 225, 186, + 145, 0, 225, 186, 147, 0, 225, 186, 149, 0, 104, 204, + 177, 0, 116, 204, 136, 0, 119, 204, 138, 0, 121, 204, + 138, 0, 97, 202, 190, 0, 225, 186, 161, 0, 225, 186, + 163, 0, 225, 186, 165, 0, 225, 186, 167, 0, 225, 186, + 169, 0, 225, 186, 171, 0, 225, 186, 173, 0, 225, 186, + 175, 0, 225, 186, 177, 0, 225, 186, 179, 0, 225, 186, + 181, 0, 225, 186, 183, 0, 225, 186, 185, 0, 225, 186, + 187, 0, 225, 186, 189, 0, 225, 186, 191, 0, 225, 187, + 129, 0, 225, 187, 131, 0, 225, 187, 133, 0, 225, 187, + 135, 0, 225, 187, 137, 0, 225, 187, 139, 0, 225, 187, + 141, 0, 225, 187, 143, 0, 225, 187, 145, 0, 225, 187, + 147, 0, 225, 187, 149, 0, 225, 187, 151, 0, 225, 187, + 153, 0, 225, 187, 155, 0, 225, 187, 157, 0, 225, 187, + 159, 0, 225, 187, 161, 0, 225, 187, 163, 0, 225, 187, + 165, 0, 225, 187, 167, 0, 225, 187, 169, 0, 225, 187, + 171, 0, 225, 187, 173, 0, 225, 187, 175, 0, 225, 187, + 177, 0, 225, 187, 179, 0, 225, 187, 181, 0, 225, 187, + 183, 0, 225, 187, 185, 0, 225, 188, 128, 0, 225, 188, + 129, 0, 225, 188, 130, 0, 225, 188, 131, 0, 225, 188, + 132, 0, 225, 188, 133, 0, 225, 188, 134, 0, 225, 188, + 135, 0, 225, 188, 144, 0, 225, 188, 145, 0, 225, 188, + 146, 0, 225, 188, 147, 0, 225, 188, 148, 0, 225, 188, + 149, 0, 225, 188, 160, 0, 225, 188, 161, 0, 225, 188, + 162, 0, 225, 188, 163, 0, 225, 188, 164, 0, 225, 188, + 165, 0, 225, 188, 166, 0, 225, 188, 167, 0, 225, 188, + 176, 0, 225, 188, 177, 0, 225, 188, 178, 0, 225, 188, + 179, 0, 225, 188, 180, 0, 225, 188, 181, 0, 225, 188, + 182, 0, 225, 188, 183, 0, 225, 189, 128, 0, 225, 189, + 129, 0, 225, 189, 130, 0, 225, 189, 131, 0, 225, 189, + 132, 0, 225, 189, 133, 0, 207, 133, 204, 147, 0, 207, + 133, 204, 147, 204, 128, 0, 207, 133, 204, 147, 204, 129, + 0, 207, 133, 204, 147, 205, 130, 0, 225, 189, 145, 0, + 225, 189, 147, 0, 225, 189, 149, 0, 225, 189, 151, 0, + 225, 189, 160, 0, 225, 189, 161, 0, 225, 189, 162, 0, + 225, 189, 163, 0, 225, 189, 164, 0, 225, 189, 165, 0, + 225, 189, 166, 0, 225, 189, 167, 0, 225, 188, 128, 206, + 185, 0, 225, 188, 129, 206, 185, 0, 225, 188, 130, 206, + 185, 0, 225, 188, 131, 206, 185, 0, 225, 188, 132, 206, + 185, 0, 225, 188, 133, 206, 185, 0, 225, 188, 134, 206, + 185, 0, 225, 188, 135, 206, 185, 0, 225, 188, 160, 206, + 185, 0, 225, 188, 161, 206, 185, 0, 225, 188, 162, 206, + 185, 0, 225, 188, 163, 206, 185, 0, 225, 188, 164, 206, + 185, 0, 225, 188, 165, 206, 185, 0, 225, 188, 166, 206, + 185, 0, 225, 188, 167, 206, 185, 0, 225, 189, 160, 206, + 185, 0, 225, 189, 161, 206, 185, 0, 225, 189, 162, 206, + 185, 0, 225, 189, 163, 206, 185, 0, 225, 189, 164, 206, + 185, 0, 225, 189, 165, 206, 185, 0, 225, 189, 166, 206, + 185, 0, 225, 189, 167, 206, 185, 0, 225, 189, 176, 206, + 185, 0, 206, 177, 206, 185, 0, 206, 172, 206, 185, 0, + 206, 177, 205, 130, 0, 206, 177, 205, 130, 206, 185, 0, + 225, 190, 176, 0, 225, 190, 177, 0, 225, 189, 176, 0, + 225, 189, 177, 0, 225, 189, 180, 206, 185, 0, 206, 183, + 206, 185, 0, 206, 174, 206, 185, 0, 206, 183, 205, 130, + 0, 206, 183, 205, 130, 206, 185, 0, 225, 189, 178, 0, + 225, 189, 179, 0, 225, 189, 180, 0, 225, 189, 181, 0, + 206, 185, 204, 136, 204, 128, 0, 206, 185, 205, 130, 0, + 206, 185, 204, 136, 205, 130, 0, 225, 191, 144, 0, 225, + 191, 145, 0, 225, 189, 182, 0, 225, 189, 183, 0, 207, + 133, 204, 136, 204, 128, 0, 207, 129, 204, 147, 0, 207, + 133, 205, 130, 0, 207, 133, 204, 136, 205, 130, 0, 225, + 191, 160, 0, 225, 191, 161, 0, 225, 189, 186, 0, 225, + 189, 187, 0, 225, 191, 165, 0, 225, 189, 188, 206, 185, + 0, 207, 137, 206, 185, 0, 207, 142, 206, 185, 0, 207, + 137, 205, 130, 0, 207, 137, 205, 130, 206, 185, 0, 225, + 189, 184, 0, 225, 189, 185, 0, 225, 189, 188, 0, 225, + 189, 189, 0, 114, 115, 0, 194, 176, 99, 0, 194, 176, + 102, 0, 110, 111, 0, 115, 109, 0, 116, 101, 108, 0, + 116, 109, 0, 226, 133, 176, 0, 226, 133, 177, 0, 226, + 133, 178, 0, 226, 133, 179, 0, 226, 133, 180, 0, 226, + 133, 181, 0, 226, 133, 182, 0, 226, 133, 183, 0, 226, + 133, 184, 0, 226, 133, 185, 0, 226, 133, 186, 0, 226, + 133, 187, 0, 226, 133, 188, 0, 226, 133, 189, 0, 226, + 133, 190, 0, 226, 133, 191, 0, 226, 147, 144, 0, 226, + 147, 145, 0, 226, 147, 146, 0, 226, 147, 147, 0, 226, + 147, 148, 0, 226, 147, 149, 0, 226, 147, 150, 0, 226, + 147, 151, 0, 226, 147, 152, 0, 226, 147, 153, 0, 226, + 147, 154, 0, 226, 147, 155, 0, 226, 147, 156, 0, 226, + 147, 157, 0, 226, 147, 158, 0, 226, 147, 159, 0, 226, + 147, 160, 0, 226, 147, 161, 0, 226, 147, 162, 0, 226, + 147, 163, 0, 226, 147, 164, 0, 226, 147, 165, 0, 226, + 147, 166, 0, 226, 147, 167, 0, 226, 147, 168, 0, 226, + 147, 169, 0, 104, 112, 97, 0, 97, 117, 0, 111, 118, + 0, 112, 97, 0, 110, 97, 0, 206, 188, 97, 0, 109, + 97, 0, 107, 97, 0, 107, 98, 0, 109, 98, 0, 103, + 98, 0, 112, 102, 0, 110, 102, 0, 206, 188, 102, 0, + 104, 122, 0, 107, 104, 122, 0, 109, 104, 122, 0, 103, + 104, 122, 0, 116, 104, 122, 0, 107, 112, 97, 0, 109, + 112, 97, 0, 103, 112, 97, 0, 112, 118, 0, 110, 118, + 0, 206, 188, 118, 0, 109, 118, 0, 107, 118, 0, 112, + 119, 0, 110, 119, 0, 206, 188, 119, 0, 109, 119, 0, + 107, 119, 0, 107, 207, 137, 0, 109, 207, 137, 0, 98, + 113, 0, 99, 226, 136, 149, 107, 103, 0, 99, 111, 46, + 0, 100, 98, 0, 103, 121, 0, 104, 112, 0, 107, 107, + 0, 107, 109, 0, 112, 104, 0, 112, 112, 109, 0, 112, + 114, 0, 115, 118, 0, 119, 98, 0, 102, 102, 0, 102, + 105, 0, 102, 108, 0, 102, 102, 105, 0, 102, 102, 108, + 0, 115, 116, 0, 213, 180, 213, 182, 0, 213, 180, 213, + 165, 0, 213, 180, 213, 171, 0, 213, 190, 213, 182, 0, + 213, 180, 213, 173, 0, 239, 189, 129, 0, 239, 189, 130, + 0, 239, 189, 131, 0, 239, 189, 132, 0, 239, 189, 133, + 0, 239, 189, 134, 0, 239, 189, 135, 0, 239, 189, 136, + 0, 239, 189, 137, 0, 239, 189, 138, 0, 239, 189, 139, + 0, 239, 189, 140, 0, 239, 189, 141, 0, 239, 189, 142, + 0, 239, 189, 143, 0, 239, 189, 144, 0, 239, 189, 145, + 0, 239, 189, 146, 0, 239, 189, 147, 0, 239, 189, 148, + 0, 239, 189, 149, 0, 239, 189, 150, 0, 239, 189, 151, + 0, 239, 189, 152, 0, 239, 189, 153, 0, 239, 189, 154, + 0, 240, 144, 144, 168, 0, 240, 144, 144, 169, 0, 240, + 144, 144, 170, 0, 240, 144, 144, 171, 0, 240, 144, 144, + 172, 0, 240, 144, 144, 173, 0, 240, 144, 144, 174, 0, + 240, 144, 144, 175, 0, 240, 144, 144, 176, 0, 240, 144, + 144, 177, 0, 240, 144, 144, 178, 0, 240, 144, 144, 179, + 0, 240, 144, 144, 180, 0, 240, 144, 144, 181, 0, 240, + 144, 144, 182, 0, 240, 144, 144, 183, 0, 240, 144, 144, + 184, 0, 240, 144, 144, 185, 0, 240, 144, 144, 186, 0, + 240, 144, 144, 187, 0, 240, 144, 144, 188, 0, 240, 144, + 144, 189, 0, 240, 144, 144, 190, 0, 240, 144, 144, 191, + 0, 240, 144, 145, 128, 0, 240, 144, 145, 129, 0, 240, + 144, 145, 130, 0, 240, 144, 145, 131, 0, 240, 144, 145, + 132, 0, 240, 144, 145, 133, 0, 240, 144, 145, 134, 0, + 240, 144, 145, 135, 0, 240, 144, 145, 136, 0, 240, 144, + 145, 137, 0, 240, 144, 145, 138, 0, 240, 144, 145, 139, + 0, 240, 144, 145, 140, 0, 240, 144, 145, 141, 0, +}; + +static const unsigned short nameprep_id05_prohibited_imap[] = { 68, 196, 196, 324, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 196, 196, 196, 452, - 196, 196, 196, 452, 580, 580, 580, 580, - 580, 580, 580, 580, 0, 1, 2, 2, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 196, 196, 196, 580, 196, 196, 196, 580, + 708, 196, 196, 580, 836, 836, 836, 836, + 836, 836, 836, 836, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 4, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 7, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1241,19 +2098,21 @@ static unsigned short nameprep_id03_prohibited_imap[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 10, + 2, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 12, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1265,31 +2124,60 @@ static unsigned short nameprep_id03_prohibited_imap[] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 9, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 13, 14, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, }; -static struct { +static const struct { unsigned char bm[16]; -} nameprep_id03_prohibited_bitmap[] = { +} nameprep_id05_prohibited_bitmap[] = { {{ 255,255,255,255,255,223, 0,252, 1, 0, 0,248, 1, 0, 0,248, }}, @@ -1300,13 +2188,19 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }}, {{ + 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }}, {{ - 255,207, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,252, 0, 0, + 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,255,255, + 255,199, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,252, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 15, }}, {{ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1315,22 +2209,31 @@ static struct { 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 unsigned short nameprep_id03_unassigned_imap[] = { - 68, 196, 324, 452, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 580, 580, 580, 708, - 580, 580, 580, 708, 836, 836, 836, 836, - 836, 836, 836, 836, 0, 0, 0, 0, +static const unsigned short nameprep_id05_unassigned_imap[] = { + 68, 196, 324, 452, 580, 708, 708, 836, + 964, 964, 1092, 1220, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 708, 708, 708, 1348, 708, 708, 708, 1348, + 1476, 708, 708, 1348, 964, 964, 964, 964, + 964, 964, 964, 964, 0, 0, 0, 0, 1, 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, 11, 12, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, @@ -1395,6 +2298,7 @@ static unsigned short nameprep_id03_unassigned_imap[] = { 0, 0, 0, 0, 0, 0, 0, 0, 71, 12, 72, 73, 0, 0, 74, 75, 76, 77, 78, 79, 12, 12, 12, 12, + 12, 12, 80, 12, 81, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, @@ -1426,7 +2330,22 @@ static unsigned short nameprep_id03_unassigned_imap[] = { 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 80, 0, 0, 0, 0, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 0, 82, 83, 84, + 12, 12, 12, 12, 85, 86, 87, 0, + 0, 88, 0, 89, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1442,12 +2361,76 @@ static unsigned short nameprep_id03_unassigned_imap[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 91, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 0, 0, 0, 0, + 92, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 90, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 90, 93, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, }; -static struct { +static const struct { unsigned char bm[16]; -} nameprep_id03_unassigned_bitmap[] = { +} nameprep_id05_unassigned_bitmap[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }}, @@ -1461,7 +2444,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255,255,248,255,207,187, }}, {{ - 15, 40, 0, 0, 4, 0, 0, 0, 0,128, 0, 3, 0, 0,240,255, + 15, 40, 0, 0, 4, 0, 0, 0, 0,128, 0, 3, 0, 0,192,255, }}, {{ 128, 12, 0, 0, 0, 0, 0, 0, 96,230, 0, 0, 0, 0,192,252, @@ -1674,7 +2657,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, }}, {{ - 0, 0, 3, 0, 0, 0, 0, 0, 0,255,255,255,255,255, 0,240, + 0, 0, 3, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0,240, }}, {{ 255,255,255,255,240,255, 0, 0,224, 1, 8, 0,128,240, 40, 0, @@ -1689,6 +2672,55 @@ static struct { 0, 0, 0, 0, 0, 0, 0,128, 3, 3, 3,227,128,128,255, 1, }}, {{ + 0, 0, 0,128,240,255, 0, 0, 0,248,255,255,255,255,255,255, + }}, + {{ + 0, 0, 0, 0,192, 0, 0, 0, 0,192,255,255,255,255,255,255, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,255, + }}, + {{ + 0, 0, 0, 0,128, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,255,255,255,255, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 32,155, 33, 0, 20, 18, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 64, 24, 32, 32, 0, 0, 0,132,160, 3, 2, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, + }}, + {{ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 63, }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,255,255,255,255,255, + }}, + {{ + 0, 0, 0,192,255,255,255,255,255,255,255,255,255,255,255,255, + }}, + {{ + 253,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, }; +#define nameprep_id06_map_imap nameprep_id05_map_imap +#define nameprep_id06_map_table nameprep_id05_map_table +#define nameprep_id06_map_data nameprep_id05_map_data + +#define nameprep_id06_prohibited_imap nameprep_id05_prohibited_imap +#define nameprep_id06_prohibited_bitmap nameprep_id05_prohibited_bitmap + +#define nameprep_id06_unassigned_imap nameprep_id05_unassigned_imap +#define nameprep_id06_unassigned_bitmap nameprep_id05_unassigned_bitmap + diff --git a/contrib/idn/mdnkit/lib/normalizer.c b/contrib/idn/mdnkit/lib/normalizer.c index 7e83a584..b14b5109 100644 --- a/contrib/idn/mdnkit/lib/normalizer.c +++ b/contrib/idn/mdnkit/lib/normalizer.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: normalizer.c,v 1.25 2001/05/31 05:21:37 ishisone Exp $"; +static char *rcsid = "$Id: normalizer.c,v 1.1 2002/01/02 02:46:46 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: normalizer.c,v 1.25 2001/05/31 05:21:37 ishisone Exp * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -86,7 +86,8 @@ typedef struct { mdn_normalizer_proc_t proc; } normalize_scheme_t; -typedef mdn_result_t (*caseconv_proc_t)(unsigned long, mdn__unicode_context_t, +typedef mdn_result_t (*caseconv_proc_t)(mdn__unicode_version_t, + unsigned long, mdn__unicode_context_t, unsigned long *, size_t, int *); struct mdn_normalizer { @@ -99,6 +100,16 @@ struct mdn_normalizer { static mdn_strhash_t scheme_hash; +static mdn__unicode_version_t vcur = NULL; +static mdn__unicode_version_t v301 = NULL; +static mdn__unicode_version_t v310 = NULL; +#define INIT_VERSION(version, var) \ + if (var == NULL) { \ + mdn_result_t r = mdn__unicode_create(version, &var); \ + if (r != mdn_success) \ + return (r); \ + } + static mdn_result_t expand_schemes(mdn_normalizer_t ctx); static mdn_result_t register_standard_normalizers(void); static mdn_result_t normalizer_ascii_lowercase(const char *from, @@ -112,10 +123,35 @@ static mdn_result_t normalizer_unicode_uppercase(const char *from, static mdn_result_t normalizer_unicode_caseconv(caseconv_proc_t caseconv, const char *from, char *to, size_t tolen); -static mdn__unicode_context_t get_casemap_context(const char *from, +static mdn__unicode_context_t get_casemap_context(mdn__unicode_version_t ver, + const char *from, size_t fromlen); static mdn_result_t normalizer_unicode_casefold(const char *from, char *to, size_t tolen); +static mdn_result_t normalizer_formc(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formd(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkc(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkd(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formc_v301(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formd_v301(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkc_v301(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkd_v301(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formc_v310(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formd_v310(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkc_v310(const char *from, + char *to, size_t tolen); +static mdn_result_t normalizer_formkd_v310(const char *from, + char *to, size_t tolen); static struct standard_normalizer { char *name; @@ -126,12 +162,21 @@ static struct standard_normalizer { { "unicode-lowercase", normalizer_unicode_lowercase }, { "unicode-uppercase", normalizer_unicode_uppercase }, { "unicode-foldcase", normalizer_unicode_casefold }, - { "unicode-form-c", mdn__unormalize_formc }, - { "unicode-form-d", mdn__unormalize_formd }, - { "unicode-form-kc", mdn__unormalize_formkc }, - { "unicode-form-kd", mdn__unormalize_formkd }, - { "nameprep-02", mdn__unormalize_formkc }, - { "nameprep-03", mdn__unormalize_formkc }, + { "unicode-form-c", normalizer_formc }, + { "unicode-form-d", normalizer_formd }, + { "unicode-form-kc", normalizer_formkc }, + { "unicode-form-kd", normalizer_formkd }, + { "unicode-form-c/3.0.1", normalizer_formc_v301 }, + { "unicode-form-d/3.0.1", normalizer_formd_v301 }, + { "unicode-form-kc/3.0.1", normalizer_formkc_v301 }, + { "unicode-form-kd/3.0.1", normalizer_formkd_v301 }, + { "unicode-form-c/3.1.0", normalizer_formc_v310 }, + { "unicode-form-d/3.1.0", normalizer_formd_v310 }, + { "unicode-form-kc/3.1.0", normalizer_formkc_v310 }, + { "unicode-form-kd/3.1.0", normalizer_formkd_v310 }, + { "nameprep-03", normalizer_formkc_v301 }, + { "nameprep-05", normalizer_formkc_v310 }, + { "nameprep-06", normalizer_formkc_v310 }, { NULL, NULL }, }; @@ -525,6 +570,8 @@ normalizer_unicode_caseconv(caseconv_proc_t caseconv, { size_t fromlen = strlen(from); + INIT_VERSION(NULL, vcur); + while (fromlen > 0 && tolen > 0) { #define CASEMAPBUFSZ 4 unsigned long c; @@ -541,12 +588,12 @@ normalizer_unicode_caseconv(caseconv_proc_t caseconv, fromlen -= w; redo: - r = (*caseconv)(c, ctx, v, CASEMAPBUFSZ, &vlen); + r = (*caseconv)(vcur, c, ctx, v, CASEMAPBUFSZ, &vlen); switch (r) { case mdn_success: break; case mdn_context_required: - ctx = get_casemap_context(from, fromlen); + ctx = get_casemap_context(vcur, from, fromlen); goto redo; case mdn_buffer_overflow: FATAL(("mdn_normalizer_normalize: " @@ -571,7 +618,8 @@ normalizer_unicode_caseconv(caseconv_proc_t caseconv, } static mdn__unicode_context_t -get_casemap_context(const char *from, size_t fromlen) { +get_casemap_context(mdn__unicode_version_t ver, + const char *from, size_t fromlen) { while (fromlen > 0) { unsigned long v; mdn__unicode_context_t ctx; @@ -581,7 +629,7 @@ get_casemap_context(const char *from, size_t fromlen) { return (mdn_invalid_encoding); from += w; fromlen -= w; - ctx = mdn__unicode_getcontext(v); + ctx = mdn__unicode_getcontext(ver, v); if (ctx == mdn__unicode_context_nonfinal || ctx == mdn__unicode_context_final) return (ctx); @@ -593,6 +641,8 @@ static mdn_result_t normalizer_unicode_casefold(const char *from, char *to, size_t tolen) { size_t fromlen = strlen(from); + INIT_VERSION(NULL, vcur); + while (fromlen > 0 && tolen > 0) { #define CASEFOLDBUFSZ 4 unsigned long c; @@ -607,7 +657,7 @@ normalizer_unicode_casefold(const char *from, char *to, size_t tolen) { from += w; fromlen -= w; - r = mdn__unicode_casefold(c, v, CASEFOLDBUFSZ, &vlen); + r = mdn__unicode_casefold(vcur, c, v, CASEFOLDBUFSZ, &vlen); switch (r) { case mdn_success: break; @@ -633,3 +683,87 @@ normalizer_unicode_casefold(const char *from, char *to, size_t tolen) { return (mdn_success); } +/* + * Unicode Normalization Forms -- latest version + */ + +static mdn_result_t +normalizer_formc(const char *from, char *to, size_t tolen) { + INIT_VERSION(NULL, vcur); + return (mdn__unormalize_formc(vcur, from, to, tolen)); +} + +static mdn_result_t +normalizer_formd(const char *from, char *to, size_t tolen) { + INIT_VERSION(NULL, vcur); + return (mdn__unormalize_formd(vcur, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkc(const char *from, char *to, size_t tolen) { + INIT_VERSION(NULL, vcur); + return (mdn__unormalize_formkc(vcur, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkd(const char *from, char *to, size_t tolen) { + INIT_VERSION(NULL, vcur); + return (mdn__unormalize_formkd(vcur, from, to, tolen)); +} + +/* + * Unicode Normalization Forms -- version 3.0.1 + */ + +static mdn_result_t +normalizer_formc_v301(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.0.1", v301); + return (mdn__unormalize_formc(v301, from, to, tolen)); +} + +static mdn_result_t +normalizer_formd_v301(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.0.1", v301); + return (mdn__unormalize_formd(v301, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkc_v301(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.0.1", v301); + return (mdn__unormalize_formkc(v301, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkd_v301(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.0.1", v301); + return (mdn__unormalize_formkd(v301, from, to, tolen)); +} + +/* + * Unicode Normalization Forms -- version 3.1.0 + */ + +static mdn_result_t +normalizer_formc_v310(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.1.0", v310); + return (mdn__unormalize_formc(v310, from, to, tolen)); +} + +static mdn_result_t +normalizer_formd_v310(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.1.0", v310); + return (mdn__unormalize_formd(v310, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkc_v310(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.1.0", v310); + return (mdn__unormalize_formkc(v310, from, to, tolen)); +} + +static mdn_result_t +normalizer_formkd_v310(const char *from, char *to, size_t tolen) { + INIT_VERSION("3.1.0", v310); + return (mdn__unormalize_formkd(v310, from, to, tolen)); +} + diff --git a/contrib/idn/mdnkit/lib/race.c b/contrib/idn/mdnkit/lib/race.c index 293c1717..5a4216bb 100644 --- a/contrib/idn/mdnkit/lib/race.c +++ b/contrib/idn/mdnkit/lib/race.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: race.c,v 1.23 2001/03/07 00:58:52 ishisone Exp $"; +static char *rcsid = "$Id: race.c,v 1.1 2002/01/02 02:46:46 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: race.c,v 1.23 2001/03/07 00:58:52 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/res.c b/contrib/idn/mdnkit/lib/res.c index 25c97c2e..c06dda5a 100644 --- a/contrib/idn/mdnkit/lib/res.c +++ b/contrib/idn/mdnkit/lib/res.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: res.c,v 1.17 2001/05/15 05:04:00 ishisone Exp $"; +static char *rcsid = "$Id: res.c,v 1.1 2002/01/02 02:46:46 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: res.c,v 1.17 2001/05/15 05:04:00 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -96,45 +96,42 @@ static mdn_result_t nameconv_p(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); static mdn_result_t nameconv_u(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); +static mdn_result_t nameconv_N(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); static mdn_result_t nameconv_I(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); static mdn_result_t nameconv_i(mdn_resconf_t ctx, const char *from, char *to, size_t tolen); -static mdn_result_t nameconv_a(mdn_resconf_t ctx, const char *from, - char *to, size_t tolen); -static mdn_result_t nameconv_A(mdn_resconf_t ctx, const char *from, - char *to, size_t tolen); +static mdn_result_t nameconv_xm(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); +static mdn_result_t nameconv_xn(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); +static mdn_result_t nameconv_xp(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); +static mdn_result_t nameconv_xu(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); +static mdn_result_t nameconv_xN(mdn_resconf_t ctx, const char *from, + char *to, size_t tolen); static mdn_result_t copy_verbatim(const char *from, char *to, size_t tolen); mdn_result_t -mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, +mdn_res_nameconv(mdn_resconf_t ctx, const char *insn, const char *from, char *to, size_t tolen) { mdn_result_t r; - size_t fromlen; char *src, *dst; char static_buffers[2][1024]; /* large enough */ char *dynamic_buffers[2]; size_t dynamic_buflen[2]; - char actions_buffer[64]; /* large enough */ - char *ap; + const char *ap; size_t dstlen; - int idx; + int dstidx; assert(ctx != NULL && from != NULL && to != NULL); - TRACE(("mdn_res_nameconv(from=\"%s\")\n", - mdn_debug_xstring(from, 20))); - - /* - * Copy `actions' to `actions_buffer' + 2. - * We make two characters space to extend the action `N'. - */ - if (strlen(actions) + 1 > sizeof(actions_buffer) - 2) - return (mdn_invalid_action); - strcpy(actions_buffer + 2, actions); - ap = actions_buffer + 2; + TRACE(("mdn_res_nameconv(insn=%s, from=\"%s\", tolen=%d)\n", + insn, mdn_debug_xstring(from, 256), tolen)); /* * Initialize the buffers to use the local @@ -145,13 +142,12 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, dynamic_buflen[0] = 0; dynamic_buflen[1] = 0; - fromlen = strlen(from); - /* * Convert. */ src = (void *)from; - dstlen = fromlen + 1; + dstlen = sizeof(static_buffers[0]) + 1; + ap = insn; while (*ap != '\0') { if (*ap == ' ' || *ap == '\t') { @@ -162,56 +158,31 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, /* * Choose destination area to restore the result of a mapping. */ - if (*ap == 'p' || *ap == 'u') { - dst = src; - } else if (dstlen <= sizeof(static_buffers[0])) { + if (dstlen <= sizeof(static_buffers[0])) { if (src == static_buffers[0]) - idx = 1; + dstidx = 1; else - idx = 0; - - dst = static_buffers[idx]; - dstlen = sizeof(static_buffers[0]); + dstidx = 0; + dst = static_buffers[dstidx]; } else { + void *newbuf; + if (src == dynamic_buffers[0]) - idx = 1; + dstidx = 1; else - idx = 0; - - if (dynamic_buflen[idx] == 0) { - dynamic_buffers[idx] = (char *) malloc(dstlen); - if (dynamic_buffers[idx] == NULL) { - r = mdn_nomemory; - goto failure; - } - dynamic_buflen[idx] = dstlen; - - } else if (dynamic_buflen[idx] < dstlen) { - char *newbuf; - - newbuf = realloc(dynamic_buffers[idx], dstlen); - if (newbuf == NULL) { - r = mdn_nomemory; - goto failure; - } - dynamic_buffers[idx] = newbuf; - dynamic_buflen[idx] = dstlen; + dstidx = 0; + + newbuf = (char *)realloc(dynamic_buffers[dstidx], + dstlen); + if (newbuf == NULL) { + r = mdn_nomemory; + goto failure; } + dynamic_buffers[dstidx] = newbuf; + dynamic_buflen[dstidx] = dstlen; - dst = dynamic_buffers[idx]; - dstlen = dynamic_buflen[idx]; - } - - /* - * Determine an action character. - * If the current action is `N', we resolve it into "mnp". - */ - if (*ap == 'N') { - *(ap - 2) = 'm'; - *(ap - 1) = 'n'; - *ap = 'p'; - ap -= 2; + dst = dynamic_buffers[dstidx]; } /* @@ -243,17 +214,37 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, case 'u': r = nameconv_u(ctx, src, dst, dstlen); break; + case 'N': + r = nameconv_N(ctx, src, dst, dstlen); + break; case 'I': r = nameconv_I(ctx, src, dst, dstlen); break; case 'i': r = nameconv_i(ctx, src, dst, dstlen); break; - case 'a': - r = nameconv_a(ctx, src, dst, dstlen); - break; - case 'A': - r = nameconv_A(ctx, src, dst, dstlen); + case '!': + ap++; + switch (*ap) { + case 'm': + r = nameconv_xm(ctx, src, dst, dstlen); + break; + case 'n': + r = nameconv_xn(ctx, src, dst, dstlen); + break; + case 'p': + r = nameconv_xp(ctx, src, dst, dstlen); + break; + case 'u': + r = nameconv_xu(ctx, src, dst, dstlen); + break; + case 'N': + r = nameconv_xN(ctx, src, dst, dstlen); + break; + default: + r = mdn_invalid_action; + break; + } break; default: r = mdn_invalid_action; @@ -274,9 +265,15 @@ mdn_res_nameconv(mdn_resconf_t ctx, const char *actions, const char *from, if (r != mdn_success) goto failure; + TRACE(("mdn_res_nameconv: to=\"%s\"\n", + mdn_debug_xstring(to, 256))); + + free(dynamic_buffers[0]); + free(dynamic_buffers[1]); return (mdn_success); failure: + TRACE(("mdn_res_nameconv() failed, %s\n", mdn_result_tostring(r))); free(dynamic_buffers[0]); free(dynamic_buffers[1]); return (r); @@ -287,16 +284,7 @@ nameconv_l(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_result_t r; mdn_converter_t local_converter; - mdn_converter_t alternate_converter; - alternate_converter = mdn_resconf_getalternateconverter(ctx); - if (alternate_converter != NULL) { - r = mdn_converter_localtoutf8(alternate_converter, from, to, - tolen); - mdn_converter_destroy(alternate_converter); - if (r == mdn_success && strcmp(from, to) != 0) - return (r); - } local_converter = mdn_resconf_getlocalconverter(ctx); if (local_converter != NULL) { r = mdn_converter_localtoutf8(local_converter, from, to, @@ -314,7 +302,6 @@ nameconv_L(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_result_t r; mdn_converter_t local_converter; - mdn_converter_t alternate_converter; local_converter = mdn_resconf_getlocalconverter(ctx); if (local_converter != NULL) { @@ -324,15 +311,8 @@ nameconv_L(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) } else { r = copy_verbatim(from, to, tolen); } - if (r != mdn_nomapping) - return (r); - - alternate_converter = mdn_resconf_getalternateconverter(ctx); - if (alternate_converter != NULL) { - r = mdn_converter_utf8tolocal(alternate_converter, from, to, - tolen); - mdn_converter_destroy(alternate_converter); - } + if (r == mdn_nomapping) + r = nameconv_I(ctx, from, to, tolen); return (r); } @@ -372,46 +352,6 @@ nameconv_M(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) } static mdn_result_t -nameconv_p(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) -{ - mdn_result_t r; - const char *found; - mdn_checker_t prohibit_checker; - - prohibit_checker = mdn_resconf_getprohibitchecker(ctx); - if (prohibit_checker != NULL) { - r = mdn_checker_lookup(prohibit_checker, from, &found); - if (found != NULL) - r = mdn_prohibited; - mdn_checker_destroy(prohibit_checker); - } else { - r = mdn_success; - } - - return (r); -} - -static mdn_result_t -nameconv_u(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) -{ - mdn_result_t r; - mdn_checker_t unassigned_checker; - const char *found; - - unassigned_checker = mdn_resconf_getunassignedchecker(ctx); - if (unassigned_checker != NULL) { - r = mdn_checker_lookup(unassigned_checker, from, &found); - if (found != NULL) - r = mdn_prohibited; - mdn_checker_destroy(unassigned_checker); - } else { - r = mdn_success; - } - - return (r); -} - -static mdn_result_t nameconv_m(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_mapper_t mapper = NULL; @@ -577,6 +517,96 @@ failure: } static mdn_result_t +nameconv_p(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + const char *found; + mdn_checker_t prohibit_checker; + + prohibit_checker = mdn_resconf_getprohibitchecker(ctx); + if (prohibit_checker != NULL) { + r = mdn_checker_lookup(prohibit_checker, from, &found); + mdn_checker_destroy(prohibit_checker); + if (r == mdn_success && found != NULL) + r = mdn_prohibited; + if (r != mdn_success) + return (r); + } + + r = copy_verbatim(from, to, tolen); + + return (r); +} + +static mdn_result_t +nameconv_u(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + mdn_checker_t unassigned_checker; + const char *found; + + unassigned_checker = mdn_resconf_getunassignedchecker(ctx); + if (unassigned_checker != NULL) { + r = mdn_checker_lookup(unassigned_checker, from, &found); + mdn_checker_destroy(unassigned_checker); + if (r == mdn_success && found != NULL) + r = mdn_prohibited; + if (r != mdn_success) + return (r); + } + + r = copy_verbatim(from, to, tolen); + + return (r); +} + +static mdn_result_t +nameconv_N(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + char static_buffer1[1024]; /* large enough */ + char static_buffer2[1024]; /* large enough */ + char *dynamic_buffer1 = NULL; + char *dynamic_buffer2 = NULL; + char *work1, *work2; + + if (tolen <= sizeof(static_buffer1)) { + work1 = static_buffer1; + work2 = static_buffer2; + } else { + dynamic_buffer1 = (char *)malloc(tolen); + dynamic_buffer2 = (char *)malloc(tolen); + if (dynamic_buffer1 == NULL || dynamic_buffer2 == NULL) { + r = mdn_nomemory; + goto failure; + } + work1 = dynamic_buffer1; + work2 = dynamic_buffer2; + } + + r = nameconv_m(ctx, from, work1, tolen); + if (r != mdn_success) + goto failure; + + r = nameconv_n(ctx, work1, work2, tolen); + if (r != mdn_success) + goto failure; + + r = nameconv_p(ctx, work2, to, tolen); + if (r != mdn_success) + goto failure; + + free(dynamic_buffer1); + free(dynamic_buffer2); + return (r); + +failure: + free(dynamic_buffer1); + free(dynamic_buffer2); + return (r); +} + +static mdn_result_t nameconv_I(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_result_t r; @@ -611,42 +641,160 @@ nameconv_i(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) } static mdn_result_t -nameconv_a(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +nameconv_xm(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_result_t r; - mdn_converter_t alternate_converter; + mdn_converter_t idn_converter; + int encoding_type; + int isvalid; - alternate_converter = mdn_resconf_getalternateconverter(ctx); - if (alternate_converter != NULL) { - r = mdn_converter_localtoutf8(alternate_converter, from, to, - tolen); - mdn_converter_destroy(alternate_converter); + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); } else { - r = copy_verbatim(from, to, tolen); + encoding_type = MDN_NONACE; } + r = nameconv_m(ctx, from, to, tolen); + if (r != mdn_success) + return (r); + + if (encoding_type == MDN_ACE_STRICTCASE) + isvalid = mdn_util_casematch(from, to, tolen); + else + isvalid = (strcmp(from, to) == 0); + + if (isvalid || encoding_type == MDN_NONACE) + r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); + return (r); } static mdn_result_t -nameconv_A(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +nameconv_xn(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { mdn_result_t r; - mdn_converter_t alternate_converter; + mdn_converter_t idn_converter; + int encoding_type; + int isvalid; - alternate_converter = mdn_resconf_getalternateconverter(ctx); - if (alternate_converter != NULL) { - r = mdn_converter_utf8tolocal(alternate_converter, from, to, - tolen); - mdn_converter_destroy(alternate_converter); + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); } else { + encoding_type = MDN_NONACE; + } + + r = nameconv_n(ctx, from, to, tolen); + if (r != mdn_success) + return (r); + + if (encoding_type == MDN_ACE_STRICTCASE) + isvalid = mdn_util_casematch(from, to, tolen); + else + isvalid = (strcmp(from, to) == 0); + + if (isvalid || encoding_type == MDN_NONACE) r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); + + return (r); +} + +static mdn_result_t +nameconv_xp(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + mdn_converter_t idn_converter; + int encoding_type; + + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); + } else { + encoding_type = MDN_NONACE; + } + + r = nameconv_p(ctx, from, to, tolen); + if (r == mdn_prohibited) { + if (encoding_type == MDN_NONACE) + r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); } return (r); } static mdn_result_t +nameconv_xu(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + mdn_converter_t idn_converter; + int encoding_type; + + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); + } else { + encoding_type = MDN_NONACE; + } + + r = nameconv_u(ctx, from, to, tolen); + if (r == mdn_prohibited) { + if (encoding_type == MDN_NONACE) + r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); + } + + return (mdn_success); +} + +static mdn_result_t +nameconv_xN(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) +{ + mdn_result_t r; + mdn_converter_t idn_converter; + int encoding_type; + int isvalid; + + idn_converter = mdn_resconf_getidnconverter(ctx); + if (idn_converter != NULL) { + encoding_type = mdn_converter_encodingtype(idn_converter); + mdn_converter_destroy(idn_converter); + } else { + encoding_type = MDN_NONACE; + } + + r = nameconv_N(ctx, from, to, tolen); + if (r == mdn_success) { + if (encoding_type == MDN_ACE_STRICTCASE) + isvalid = mdn_util_casematch(from, to, tolen); + else + isvalid = (strcmp(from, to) == 0); + } else if (r == mdn_prohibited) { + isvalid = 0; + } else { + return (r); + } + + if (isvalid || encoding_type == MDN_NONACE) + r = copy_verbatim(from, to, tolen); + else + r = nameconv_I(ctx, from, to, tolen); + + return (r); +} + +static mdn_result_t copy_verbatim(const char *from, char *to, size_t tolen) { size_t fromlen = strlen(from); @@ -661,6 +809,8 @@ copy_verbatim(const char *from, char *to, size_t tolen) { #undef mdn_res_map #undef mdn_res_normalize #undef mdn_res_prohibitcheck +#undef mdn_res_nameprep +#undef mdn_res_nameprepcheck #undef mdn_res_unassignedcheck #undef mdn_res_delimitermap #undef mdn_res_localmap @@ -698,6 +848,18 @@ mdn_res_prohibitcheck(mdn_resconf_t ctx, const char *from, char *to, } mdn_result_t +mdn_res_nameprep(mdn_resconf_t ctx, const char *from, char *to, + size_t tolen) { + return mdn_res_nameconv(ctx, "N", from, to, tolen); +} + +mdn_result_t +mdn_res_nameprepcheck(mdn_resconf_t ctx, const char *from, char *to, + size_t tolen) { + return mdn_res_nameconv(ctx, "!N", from, to, tolen); +} + +mdn_result_t mdn_res_unassignedcheck(mdn_resconf_t ctx, const char *from, char *to, size_t tolen) { return mdn_res_nameconv(ctx, "u", from, to, tolen); diff --git a/contrib/idn/mdnkit/lib/resconf.c b/contrib/idn/mdnkit/lib/resconf.c index bf886f7d..e4f27f7e 100644 --- a/contrib/idn/mdnkit/lib/resconf.c +++ b/contrib/idn/mdnkit/lib/resconf.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: resconf.c,v 1.25 2001/04/16 02:25:17 m-kasahr Exp $"; +static char *rcsid = "$Id: resconf.c,v 1.1 2002/01/02 02:46:46 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: resconf.c,v 1.25 2001/04/16 02:25:17 m-kasahr Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -95,7 +95,6 @@ struct mdn_resconf { char *local_encoding; mdn_converter_t local_converter; mdn_converter_t idn_converter; - mdn_converter_t alternate_converter; mdn_normalizer_t normalizer; mdn_checker_t prohibit_checker; mdn_checker_t unassigned_checker; @@ -106,8 +105,6 @@ struct mdn_resconf { }; static mdn_result_t parse_conf(mdn_resconf_t ctx, FILE *fp); -static mdn_result_t parse_alternate_encoding(mdn_resconf_t ctx, - char *args, int lineno); static mdn_result_t parse_delimiter_map(mdn_resconf_t ctx, char *args, int lineno); static mdn_result_t parse_encoding_alias_file(mdn_resconf_t ctx, @@ -168,7 +165,6 @@ mdn_resconf_create(mdn_resconf_t *ctxp) { ctx->local_encoding = NULL; ctx->local_converter = NULL; ctx->idn_converter = NULL; - ctx->alternate_converter = NULL; ctx->normalizer = NULL; ctx->prohibit_checker = NULL; ctx->unassigned_checker = NULL; @@ -217,6 +213,8 @@ mdn_resconf_loadfile(mdn_resconf_t ctx, const char *file) { void mdn_resconf_destroy(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_destroy()\n")); TRACE(("mdn_resconf_destroy: update reference count (%d->%d)\n", ctx->reference_count, ctx->reference_count - 1)); @@ -242,15 +240,17 @@ mdn_resconf_incrref(mdn_resconf_t ctx) { mdn_converter_t mdn_resconf_getalternateconverter(mdn_resconf_t ctx) { - TRACE(("mdn_resconf_alternateconverter()\n")); + assert(ctx != NULL); + + TRACE(("mdn_resconf_getalternateconverter()\n")); - if (ctx->alternate_converter != NULL) - mdn_converter_incrref(ctx->alternate_converter); - return (ctx->alternate_converter); + return (mdn_resconf_getidnconverter(ctx)); } mdn_delimitermap_t mdn_resconf_getdelimitermap(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getdelimitermap()\n")); if (ctx->delimiter_mapper != NULL) @@ -260,6 +260,8 @@ mdn_resconf_getdelimitermap(mdn_resconf_t ctx) { mdn_converter_t mdn_resconf_getidnconverter(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getidnconverter()\n")); if (ctx->idn_converter != NULL) @@ -269,6 +271,8 @@ mdn_resconf_getidnconverter(mdn_resconf_t ctx) { mdn_converter_t mdn_resconf_getlocalconverter(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getlocalconverter()\n")); if (update_local_converter(ctx) != mdn_success) @@ -279,6 +283,8 @@ mdn_resconf_getlocalconverter(mdn_resconf_t ctx) { mdn_mapselector_t mdn_resconf_getlocalmapselector(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getlocalmapselector()\n")); if (ctx->local_mapper != NULL) @@ -288,6 +294,8 @@ mdn_resconf_getlocalmapselector(mdn_resconf_t ctx) { mdn_mapper_t mdn_resconf_getmapper(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getmapper()\n")); if (ctx->mapper != NULL) @@ -297,6 +305,8 @@ mdn_resconf_getmapper(mdn_resconf_t ctx) { mdn_normalizer_t mdn_resconf_getnormalizer(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getnormalizer()\n")); if (ctx->normalizer != NULL) @@ -306,6 +316,8 @@ mdn_resconf_getnormalizer(mdn_resconf_t ctx) { mdn_checker_t mdn_resconf_getprohibitchecker(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getprohibitchecker()\n")); if (ctx->prohibit_checker != NULL) @@ -315,6 +327,8 @@ mdn_resconf_getprohibitchecker(mdn_resconf_t ctx) { mdn_checker_t mdn_resconf_getunassignedchecker(mdn_resconf_t ctx) { + assert(ctx != NULL); + TRACE(("mdn_resconf_getunassignedchecker()\n")); if (ctx->unassigned_checker != NULL) @@ -325,38 +339,44 @@ mdn_resconf_getunassignedchecker(mdn_resconf_t ctx) { void mdn_resconf_setalternateconverter(mdn_resconf_t ctx, mdn_converter_t alternate_converter) { - TRACE(("mdn_resconf_setalternateconverter()\n")); + assert(ctx != NULL); - if (ctx->alternate_converter != NULL) - mdn_converter_destroy(ctx->alternate_converter); - ctx->alternate_converter = alternate_converter; - mdn_converter_incrref(ctx->alternate_converter); + TRACE(("mdn_resconf_setalternateconverter()\n")); } void mdn_resconf_setdelimitermap(mdn_resconf_t ctx, mdn_delimitermap_t delimiter_mapper) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setdelimitermap()\n")); + if (ctx->delimiter_mapper != NULL) mdn_delimitermap_destroy(ctx->delimiter_mapper); ctx->delimiter_mapper = delimiter_mapper; - mdn_delimitermap_incrref(ctx->delimiter_mapper); + if (delimiter_mapper != NULL) + mdn_delimitermap_incrref(ctx->delimiter_mapper); } void mdn_resconf_setidnconverter(mdn_resconf_t ctx, mdn_converter_t idn_converter) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setidnconverter()\n")); if (ctx->idn_converter != NULL) mdn_converter_destroy(ctx->idn_converter); ctx->idn_converter = idn_converter; - mdn_converter_incrref(ctx->idn_converter); + if (idn_converter != NULL) + mdn_converter_incrref(ctx->idn_converter); } void mdn_resconf_setlocalconverter(mdn_resconf_t ctx, mdn_converter_t local_converter) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setlocalconverter()\n")); if (ctx->local_converter != NULL) @@ -371,53 +391,69 @@ mdn_resconf_setlocalconverter(mdn_resconf_t ctx, void mdn_resconf_setlocalmapselector(mdn_resconf_t ctx, mdn_mapselector_t local_mapper) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setlocalmapselector()\n")); if (ctx->local_mapper != NULL) mdn_mapselector_destroy(ctx->local_mapper); ctx->local_mapper = local_mapper; - mdn_mapselector_incrref(ctx->local_mapper); + if (local_mapper != NULL) + mdn_mapselector_incrref(ctx->local_mapper); } void mdn_resconf_setmapper(mdn_resconf_t ctx, mdn_mapper_t mapper) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setmapper()\n")); if (ctx->mapper != NULL) mdn_mapper_destroy(ctx->mapper); ctx->mapper = mapper; - mdn_mapper_incrref(ctx->mapper); + if (mapper != NULL) + mdn_mapper_incrref(ctx->mapper); } void mdn_resconf_setnormalizer(mdn_resconf_t ctx, mdn_normalizer_t normalizer) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setnormalizer()\n")); if (ctx->normalizer != NULL) mdn_normalizer_destroy(ctx->normalizer); ctx->normalizer = normalizer; - mdn_normalizer_incrref(ctx->normalizer); + if (normalizer != NULL) + mdn_normalizer_incrref(ctx->normalizer); } void mdn_resconf_setprohibitchecker(mdn_resconf_t ctx, mdn_checker_t prohibit_checker) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setprohibitchecker()\n")); if (ctx->prohibit_checker != NULL) mdn_checker_destroy(ctx->prohibit_checker); ctx->prohibit_checker = prohibit_checker; - mdn_checker_incrref(ctx->prohibit_checker); + if (prohibit_checker != NULL) + mdn_checker_incrref(ctx->prohibit_checker); } void mdn_resconf_setunassignedchecker(mdn_resconf_t ctx, mdn_checker_t unassigned_checker) { + assert(ctx != NULL); + TRACE(("mdn_resconf_setunassignedchecker()\n")); + if (ctx->unassigned_checker != NULL) mdn_checker_destroy(ctx->unassigned_checker); ctx->unassigned_checker = unassigned_checker; - mdn_checker_incrref(ctx->unassigned_checker); + if (unassigned_checker != NULL) + mdn_checker_incrref(ctx->unassigned_checker); } mdn_result_t @@ -517,27 +553,11 @@ failure: mdn_result_t mdn_resconf_setalternateconvertername(mdn_resconf_t ctx, const char *name, int flags) { - mdn_converter_t alternate_converter; - mdn_result_t r; - assert(ctx != NULL && name != NULL); TRACE(("mdn_resconf_setalternateconvertername(name=%s, flags=%d)\n", name, flags)); - r = mdn_converter_create(name, &alternate_converter, flags); - if (r != mdn_success) - return (r); - - if (!mdn_converter_isasciicompatible(alternate_converter)) { - mdn_converter_destroy(alternate_converter); - return (mdn_invalid_name); - } - - if (ctx->alternate_converter != NULL) - mdn_converter_destroy(ctx->alternate_converter); - ctx->alternate_converter = alternate_converter; - return (mdn_success); } @@ -742,16 +762,14 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) { char *argv[3]; int argc; mdn_result_t r; - char *alternate_encoding_args = NULL; - int alternate_encoding_lineno = 0; char *idn_encoding_args = NULL; int idn_encoding_lineno = 0; char *nameprep = NULL; /* - * Parse config file. parsing of 'alternate-encoding' and - * 'idn-encoding' lines are postponed because - * 'alias-file' line must be processed before them. + * Parse config file. parsing of 'idn-encoding' line is + * postponed because 'alias-file' line must be processed + * before them. */ while (fgets(line, sizeof(line), fp) != NULL) { char *newline; @@ -776,13 +794,7 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) { } if (strcmp(argv[0], "alternate-encoding") == 0) { - r = mystrdup(argv[1], &alternate_encoding_args); - if (r != mdn_success) { - mdn_log_error("mdnres: %s, line %d\n", - mdn_result_tostring(r), lineno); - } - alternate_encoding_lineno = lineno; - + continue; } else if (strcmp(argv[0], "delimiter-map") == 0) { r = parse_delimiter_map(ctx, argv[1], lineno); @@ -858,12 +870,6 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) { } } - if (alternate_encoding_args != NULL) { - r = parse_alternate_encoding(ctx, alternate_encoding_args, - alternate_encoding_lineno); - if (r != mdn_success) - return (r); - } if (idn_encoding_args != NULL) { r = parse_idn_encoding(ctx, idn_encoding_args, idn_encoding_lineno); @@ -875,40 +881,6 @@ parse_conf(mdn_resconf_t ctx, FILE *fp) { } static mdn_result_t -parse_alternate_encoding(mdn_resconf_t ctx, char *args, int lineno) { - mdn_result_t r; - char *argv[MAX_CONF_LINE_ARGS + 1]; - int argc; - - argc = split_args(args, argv, MAX_CONF_LINE_ARGS + 1); - - if (argc != 1) { - mdn_log_error("mdnres: wrong # of args for " - "alternate-encoding, line %d\n", lineno); - return (mdn_invalid_syntax); - } - - r = mdn_converter_create(argv[0], &ctx->alternate_converter, - MDN_CONVERTER_DELAYEDOPEN); - if (r != mdn_success) { - mdn_log_error("mdnres: cannot create alternate-encodng " - "converter, %s, line %d\n", - mdn_result_tostring(r), lineno); - return (mdn_invalid_syntax); - } - - if (!mdn_converter_isasciicompatible(ctx->alternate_converter)) { - mdn_log_error("mdnres: alternate encoding must be " - "ASCII-compatible, line %d\n", lineno); - mdn_converter_destroy(ctx->alternate_converter); - ctx->alternate_converter = NULL; - return (mdn_invalid_name); - } - - return (r); -} - -static mdn_result_t parse_delimiter_map(mdn_resconf_t ctx, char *args, int lineno) { mdn_result_t r; char *argv[MAX_CONF_LINE_ARGS + 1]; @@ -1269,42 +1241,14 @@ resetconf(mdn_resconf_t ctx) { free(ctx->local_encoding); ctx->local_encoding = NULL; - if (ctx->local_converter != NULL) { - mdn_converter_destroy(ctx->local_converter); - ctx->local_converter = NULL; - } - if (ctx->idn_converter != NULL) { - mdn_converter_destroy(ctx->idn_converter); - ctx->idn_converter = NULL; - } - if (ctx->alternate_converter != NULL) { - mdn_converter_destroy(ctx->alternate_converter); - ctx->alternate_converter = NULL; - } - if (ctx->normalizer != NULL) { - mdn_normalizer_destroy(ctx->normalizer); - ctx->normalizer = NULL; - } - if (ctx->prohibit_checker != NULL) { - mdn_checker_destroy(ctx->prohibit_checker); - ctx->prohibit_checker = NULL; - } - if (ctx->unassigned_checker != NULL) { - mdn_checker_destroy(ctx->unassigned_checker); - ctx->unassigned_checker = NULL; - } - if (ctx->mapper != NULL) { - mdn_mapper_destroy(ctx->mapper); - ctx->mapper = NULL; - } - if (ctx->local_mapper != NULL) { - mdn_mapselector_destroy(ctx->local_mapper); - ctx->local_mapper = NULL; - } - if (ctx->delimiter_mapper != NULL) { - mdn_delimitermap_destroy(ctx->delimiter_mapper); - ctx->delimiter_mapper = NULL; - } + mdn_resconf_setlocalconverter(ctx, NULL); + mdn_resconf_setidnconverter(ctx, NULL); + mdn_resconf_setdelimitermap(ctx, NULL); + mdn_resconf_setlocalmapselector(ctx, NULL); + mdn_resconf_setmapper(ctx, NULL); + mdn_resconf_setnormalizer(ctx, NULL); + mdn_resconf_setprohibitchecker(ctx, NULL); + mdn_resconf_setunassignedchecker(ctx, NULL); } static mdn_result_t diff --git a/contrib/idn/mdnkit/lib/result.c b/contrib/idn/mdnkit/lib/result.c index 4bbf4684..d5947a4a 100644 --- a/contrib/idn/mdnkit/lib/result.c +++ b/contrib/idn/mdnkit/lib/result.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: result.c,v 1.10 2001/02/05 09:10:58 ishisone Exp $"; +static char *rcsid = "$Id: result.c,v 1.1 2002/01/02 02:46:47 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: result.c,v 1.10 2001/02/05 09:10:58 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/selectiveencode.c b/contrib/idn/mdnkit/lib/selectiveencode.c index bb1a760e..f450ef82 100644 --- a/contrib/idn/mdnkit/lib/selectiveencode.c +++ b/contrib/idn/mdnkit/lib/selectiveencode.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: selectiveencode.c,v 1.8 2001/05/31 05:21:38 ishisone Exp $"; +static char *rcsid = "$Id: selectiveencode.c,v 1.1 2002/01/02 02:46:47 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: selectiveencode.c,v 1.8 2001/05/31 05:21:38 ishisone * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/strhash.c b/contrib/idn/mdnkit/lib/strhash.c index 9353db05..ac99b328 100644 --- a/contrib/idn/mdnkit/lib/strhash.c +++ b/contrib/idn/mdnkit/lib/strhash.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: strhash.c,v 1.8 2000/09/20 02:47:32 ishisone Exp $"; +static char *rcsid = "$Id: strhash.c,v 1.1 2002/01/02 02:46:47 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: strhash.c,v 1.8 2000/09/20 02:47:32 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/ucsmap.c b/contrib/idn/mdnkit/lib/ucsmap.c index bd62e18a..f6f6c5cd 100644 --- a/contrib/idn/mdnkit/lib/ucsmap.c +++ b/contrib/idn/mdnkit/lib/ucsmap.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: ucsmap.c,v 1.1 2001/06/09 00:30:27 tale Exp $"; +static char *rcsid = "$Id: ucsmap.c,v 1.1.2.1 2002/02/08 12:14:23 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: ucsmap.c,v 1.1 2001/06/09 00:30:27 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/ucsset.c b/contrib/idn/mdnkit/lib/ucsset.c index a9a3545b..91367da8 100644 --- a/contrib/idn/mdnkit/lib/ucsset.c +++ b/contrib/idn/mdnkit/lib/ucsset.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: ucsset.c,v 1.1 2001/06/09 00:30:27 tale Exp $"; +static char *rcsid = "$Id: ucsset.c,v 1.1.2.1 2002/02/08 12:14:24 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: ucsset.c,v 1.1 2001/06/09 00:30:27 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/unicode.c b/contrib/idn/mdnkit/lib/unicode.c index 1a4e0441..18538700 100644 --- a/contrib/idn/mdnkit/lib/unicode.c +++ b/contrib/idn/mdnkit/lib/unicode.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $"; +static char *rcsid = "$Id: unicode.c,v 1.1 2002/01/02 02:46:48 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -65,12 +65,15 @@ static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $"; #include <stddef.h> #include <stdlib.h> +#include <string.h> #include <mdn/result.h> #include <mdn/logmacro.h> #include <mdn/assert.h> #include <mdn/unicode.h> +#define UNICODE_CURRENT "3.1.0" + #define UCS_MAX 0x10ffff #define END_BIT 0x80000000 @@ -86,63 +89,118 @@ static char *rcsid = "$Id: unicode.c,v 1.13 2001/02/14 02:16:15 ishisone Exp $"; #define TCount 28 #define SLast (SBase + LCount * VCount * TCount) -#include "unicodedata.c" - /* - * Macro for multi-level index table. + * Symbol composition macro. */ -#define LOOKUPTBL(vprefix, mprefix, v) \ - DMAP(vprefix)[\ - IMAP(vprefix)[\ - IMAP(vprefix)[IDX0(mprefix, v)] + IDX1(mprefix, v)\ - ]\ - ].tbl[IDX2(mprefix, v)] +#define compose_sym(a, b) compose_symX(a, b) +#define compose_symX(a, b) a ## b + +struct composition { + unsigned long c2; /* 2nd character */ + unsigned long comp; /* composed character */ +}; + +#include "unicodedata_301.c" +#define VERSION v301 +#include "unicode_template.c" +#undef VERSION + +#include "unicodedata_310.c" +#define VERSION v310 +#include "unicode_template.c" +#undef VERSION + +typedef int (*unicode_canonclassproc)(unsigned long v); +typedef int (*unicode_decomposeproc)(unsigned long c, + const unsigned long **seqp); +typedef int (*unicode_composeproc)(unsigned long c, + const struct composition **compp); +typedef int (*unicode_toupperproc)(unsigned long c, + const unsigned long **seqp); +typedef int (*unicode_tolowerproc)(unsigned long c, + const unsigned long **seqp); +typedef int (*unicode_casectxproc)(unsigned long c); +typedef int (*unicode_casefoldingproc)(unsigned long c, + const unsigned long **seqp); + +static struct mdn__unicode_ops { + char *version; + unicode_canonclassproc canonclass_proc; + unicode_decomposeproc decompose_proc; + unicode_composeproc compose_proc; + unicode_toupperproc toupper_proc; + unicode_tolowerproc tolower_proc; + unicode_casectxproc casectx_proc; + unicode_casefoldingproc casefolding_proc; +} unicode_versions[] = { +#define MAKE_UNICODE_HANDLE(version, suffix) \ + { version, \ + compose_sym(canonclass_, suffix), \ + compose_sym(decompose_, suffix), \ + compose_sym(compose_, suffix), \ + compose_sym(toupper_, suffix), \ + compose_sym(tolower_, suffix), \ + compose_sym(casemapctx_, suffix), \ + compose_sym(casefolding_, suffix) } + MAKE_UNICODE_HANDLE("3.0.1", v301), + MAKE_UNICODE_HANDLE("3.1.0", v310), + { NULL }, +#undef MAKE_UNICODE_HANDLE +}; + +static mdn_result_t casemap(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, + unsigned long *v, size_t vlen, int *convlenp, + int do_uppercase); -#define IDX0(mprefix, v) IDX_0(v, BITS1(mprefix), BITS2(mprefix)) -#define IDX1(mprefix, v) IDX_1(v, BITS1(mprefix), BITS2(mprefix)) -#define IDX2(mprefix, v) IDX_2(v, BITS1(mprefix), BITS2(mprefix)) +mdn_result_t +mdn__unicode_create(const char *version, + mdn__unicode_version_t *versionp) +{ + mdn__unicode_version_t v; -#define IDX_0(v, bits1, bits2) ((v) >> ((bits1) + (bits2))) -#define IDX_1(v, bits1, bits2) (((v) >> (bits2)) & ((1 << (bits1)) - 1)) -#define IDX_2(v, bits1, bits2) ((v) & ((1 << (bits2)) - 1)) + assert(versionp != NULL); + TRACE(("mdn__unicode_create(version=%-.50s)\n", + version == NULL ? "<NULL>" : version)); -#define BITS1(mprefix) mprefix ## _BITS_1 -#define BITS2(mprefix) mprefix ## _BITS_2 + if (version == NULL) + version = UNICODE_CURRENT; -#define IMAP(vprefix) vprefix ## _imap -#define DMAP(vprefix) vprefix ## _table + for (v = unicode_versions; v->version != NULL; v++) { + if (strcmp(v->version, version) == 0) { + *versionp = v; + return (mdn_success); + } + } + return (mdn_notfound); +} -static mdn_result_t casemap(unsigned long c, mdn__unicode_context_t ctx, - unsigned long *v, size_t vlen, int *convlenp, - int do_uppercase); +void +mdn__unicode_destroy(mdn__unicode_version_t version) { + assert(version != NULL); + TRACE(("mdn__unicode_destroy()\n")); + /* Nothing to do */ +} int -mdn__unicode_canonicalclass(unsigned long c) { -#if 0 - TRACE(("mdn__unicode_canonicalclass(c=%lx)\n", c)); -#endif - +mdn__unicode_canonicalclass(mdn__unicode_version_t version, unsigned long c) { if (c > UCS_MAX) return (0); - return (LOOKUPTBL(canon_class, CANON_CLASS, c)); + return (*version->canonclass_proc)(c); } mdn_result_t -mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, +mdn__unicode_decompose(mdn__unicode_version_t version, + int compat, unsigned long *v, size_t vlen, unsigned long c, int *decomp_lenp) { unsigned long *vorg = v; int seqidx; - unsigned long *seq; + const unsigned long *seq; assert(v != NULL && vlen >= 0 && decomp_lenp != NULL); -#if 0 - TRACE(("mdn__unicode_decompose(compat=%d,vlen=%d,c=%lx)\n", - compat, vlen, c)); -#endif - if (c > UCS_MAX) return (mdn_notfound); @@ -172,7 +230,7 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, * or if it is a compatibility decomosition when canonical * decomposition requested, return 'mdn_notfound'. */ - seqidx = LOOKUPTBL(decompose, DECOMP, c); + seqidx = (*version->decompose_proc)(c, &seq); if (seqidx == 0 || (compat == 0 && (seqidx & DECOMP_COMPAT) != 0)) return (mdn_notfound); @@ -180,16 +238,15 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, * Copy the decomposed sequence. The end of the sequence are * marked with END_BIT. */ - seq = &decompose_seq[seqidx & ~DECOMP_COMPAT]; do { unsigned long c; - size_t dlen; + int dlen; mdn_result_t r; c = *seq & ~END_BIT; /* Decompose recursively. */ - r = mdn__unicode_decompose(compat, v, vlen, c, &dlen); + r = mdn__unicode_decompose(version, compat, v, vlen, c, &dlen); if (r == mdn_success) { v += dlen; vlen -= dlen; @@ -210,10 +267,10 @@ mdn__unicode_decompose(int compat, unsigned long *v, size_t vlen, } int -mdn__unicode_iscompositecandidate(unsigned long c) { -#if 0 - TRACE(("mdn__unicode_iscompositecandidate(c=%lx)\n", c)); -#endif +mdn__unicode_iscompositecandidate(mdn__unicode_version_t version, + unsigned long c) +{ + const struct composition *dummy; if (c > UCS_MAX) return (0); @@ -227,25 +284,22 @@ mdn__unicode_iscompositecandidate(unsigned long c) { * that begins with the given character, it is not a * composition candidate. */ - if (LOOKUPTBL(compose, CANON_COMPOSE, c) == 0) + if ((*version->compose_proc)(c, &dummy) == 0) return (0); else return (1); } mdn_result_t -mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp) +mdn__unicode_compose(mdn__unicode_version_t version, + unsigned long c1, unsigned long c2, unsigned long *compp) { - unsigned long x; int n; - int seqidx, lo, hi; + int lo, hi; + const struct composition *cseq; assert(compp != NULL); -#if 0 - TRACE(("mdn__unicode_compose(c1=%lx,c2=%lx)\n", c1, c2)); -#endif - if (c1 > UCS_MAX || c2 > UCS_MAX) return (mdn_notfound); @@ -276,26 +330,24 @@ mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp) * the number of composition that begins with 'c1', and the lower * 16bits is the offset in 'compose_seq'. */ - if ((x = LOOKUPTBL(compose, CANON_COMPOSE, c1)) == 0) + if ((n = (*version->compose_proc)(c1, &cseq)) == 0) return (mdn_notfound); - n = x >> 16; - seqidx = x & 0xffff; /* * The composite sequences are sorted by the 2nd character 'c2'. * So we can use binary search. */ - lo = seqidx; - hi = seqidx + n - 1; + lo = 0; + hi = n - 1; while (lo <= hi) { int mid = (lo + hi) / 2; - if (compose_seq[mid].c2 < c2) { + if (cseq[mid].c2 < c2) { lo = mid + 1; - } else if (compose_seq[mid].c2 > c2) { + } else if (cseq[mid].c2 > c2) { hi = mid - 1; } else { - *compp = compose_seq[mid].comp; + *compp = cseq[mid].comp; return (mdn_success); } } @@ -303,30 +355,27 @@ mdn__unicode_compose(unsigned long c1, unsigned long c2, unsigned long *compp) } mdn_result_t -mdn__unicode_toupper(unsigned long c, mdn__unicode_context_t ctx, +mdn__unicode_toupper(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp) { -#if 0 - TRACE(("mdn__unicode_toupper(c=%lx)\n", c)); -#endif - return (casemap(c, ctx, v, vlen, convlenp, 1)); + return (casemap(version, c, ctx, v, vlen, convlenp, 1)); } mdn_result_t -mdn__unicode_tolower(unsigned long c, mdn__unicode_context_t ctx, +mdn__unicode_tolower(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp) { -#if 0 - TRACE(("mdn__unicode_tolower(c=%lx)\n", c)); -#endif - return (casemap(c, ctx, v, vlen, convlenp, 0)); + return (casemap(version, c, ctx, v, vlen, convlenp, 0)); } static mdn_result_t -casemap(unsigned long c, mdn__unicode_context_t ctx, +casemap(mdn__unicode_version_t version, + unsigned long c, mdn__unicode_context_t ctx, unsigned long *v, size_t vlen, int *convlenp, int do_uppercase) { - unsigned long *seq; + const unsigned long *seq; int seqidx; if (vlen < 1) @@ -338,13 +387,10 @@ casemap(unsigned long c, mdn__unicode_context_t ctx, /* * Look up toupper/tolower mapping table. */ - if (do_uppercase) { - seq = toupper_seq; - seqidx = LOOKUPTBL(toupper, CASEMAP, c); - } else { - seq = tolower_seq; - seqidx = LOOKUPTBL(tolower, CASEMAP, c); - } + if (do_uppercase) + seqidx = (*version->toupper_proc)(c, &seq); + else + seqidx = (*version->tolower_proc)(c, &seq); /* Zero means there are no mapping. */ if (seqidx == 0) @@ -356,7 +402,6 @@ casemap(unsigned long c, mdn__unicode_context_t ctx, * are defined for a single character, so we have to loop * through all the mappings. */ - seq += seqidx; for (;;) { int found = 0; unsigned long flags = *seq++; @@ -425,7 +470,9 @@ casemap(unsigned long c, mdn__unicode_context_t ctx, } mdn__unicode_context_t -mdn__unicode_getcontext(unsigned long c) { +mdn__unicode_getcontext(mdn__unicode_version_t version, + unsigned long c) +{ #if 0 TRACE(("mdn__unicode_getcontext(c=%lx)\n", c)); #endif @@ -433,7 +480,7 @@ mdn__unicode_getcontext(unsigned long c) { if (c > UCS_MAX) return (mdn__unicode_context_final); - switch (LOOKUPTBL(casemap_ctx, CASEMAP_CTX, c)) { + switch ((*version->casectx_proc)(c)) { case CTX_CASED: return (mdn__unicode_context_nonfinal); case CTX_NSM: @@ -444,12 +491,13 @@ mdn__unicode_getcontext(unsigned long c) { } mdn_result_t -mdn__unicode_casefold(unsigned long c, unsigned long *v, size_t vlen, +mdn__unicode_casefold(mdn__unicode_version_t version, + unsigned long c, unsigned long *v, size_t vlen, int *foldlenp) { unsigned long *vorg = v; int seqidx; - unsigned long *seq; + const unsigned long *seq; assert(v != NULL && vlen >= 0 && foldlenp != NULL); @@ -462,10 +510,9 @@ mdn__unicode_casefold(unsigned long c, unsigned long *v, size_t vlen, goto nomap; /* Look up case folding table. */ - if ((seqidx = LOOKUPTBL(case_folding, CASE_FOLDING, c)) == 0) + if ((seqidx = (*version->casefolding_proc)(c, &seq)) == 0) goto nomap; - seq = &case_folding_seq[seqidx]; do { if (vlen-- < 1) return (mdn_buffer_overflow); diff --git a/contrib/idn/mdnkit/lib/unicode_template.c b/contrib/idn/mdnkit/lib/unicode_template.c new file mode 100644 index 00000000..a64af678 --- /dev/null +++ b/contrib/idn/mdnkit/lib/unicode_template.c @@ -0,0 +1,145 @@ +/* $Id: unicode_template.c,v 1.1.2.1 2002/02/08 12:14:26 marka Exp $ */ + +/* + * Copyright (c) 2000,2001 Japan Network Information Center. + * All rights reserved. + * + * By using this file, you agree to the terms and conditions set forth bellow. + * + * LICENSE TERMS AND CONDITIONS + * + * The following License Terms and Conditions apply, unless a different + * license is obtained from Japan Network Information Center ("JPNIC"), + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. + * + * 1. Use, Modification and Redistribution (including distribution of any + * modified or derived work) in source and/or binary forms is permitted + * under this License Terms and Conditions. + * + * 2. Redistribution of source code must retain the copyright notices as they + * appear in each source code file, this License Terms and Conditions. + * + * 3. Redistribution in binary form must reproduce the Copyright Notice, + * this License Terms and Conditions, in the documentation and/or other + * materials provided with the distribution. For the purposes of binary + * distribution the "Copyright Notice" refers to the following language: + * "Copyright (c) Japan Network Information Center. All rights reserved." + * + * 4. Neither the name of JPNIC may be used to endorse or promote products + * derived from this Software without specific prior written approval of + * JPNIC. + * + * 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + * 6. Indemnification by Licensee + * Any person or entities using and/or redistributing this Software under + * this License Terms and Conditions shall defend indemnify and hold + * harmless JPNIC from and against any and all judgements damages, + * expenses, settlement liabilities, cost and other liabilities of any + * kind as a result of use and redistribution of this Software or any + * claim, suite, action, litigation or proceeding by any third party + * arising out of or relates to this License Terms and Conditions. + * + * 7. Governing Law, Jurisdiction and Venue + * This License Terms and Conditions shall be governed by and and + * construed in accordance with the law of Japan. Any person or entities + * using and/or redistributing this Software under this License Terms and + * Conditions hereby agrees and consent to the personal and exclusive + * jurisdiction and venue of Tokyo District Court of Japan. + */ + +#ifndef UNICODE_TEMPLATE_INIT +#define UNICODE_TEMPLATE_INIT + +/* + * Macro for multi-level index table. + */ +#define LOOKUPTBL(vprefix, mprefix, v) \ + DMAP(vprefix)[\ + IMAP(vprefix)[\ + IMAP(vprefix)[IDX0(mprefix, v)] + IDX1(mprefix, v)\ + ]\ + ].tbl[IDX2(mprefix, v)] + +#define IDX0(mprefix, v) IDX_0(v, BITS1(mprefix), BITS2(mprefix)) +#define IDX1(mprefix, v) IDX_1(v, BITS1(mprefix), BITS2(mprefix)) +#define IDX2(mprefix, v) IDX_2(v, BITS1(mprefix), BITS2(mprefix)) + +#define IDX_0(v, bits1, bits2) ((v) >> ((bits1) + (bits2))) +#define IDX_1(v, bits1, bits2) (((v) >> (bits2)) & ((1 << (bits1)) - 1)) +#define IDX_2(v, bits1, bits2) ((v) & ((1 << (bits2)) - 1)) + +#define BITS1(mprefix) mprefix ## _BITS_1 +#define BITS2(mprefix) mprefix ## _BITS_2 + +#define IMAP(vprefix) concat4(VERSION, _, vprefix, _imap) +#define DMAP(vprefix) concat4(VERSION, _, vprefix, _table) +#define SEQ(vprefix) concat4(VERSION, _, vprefix, _seq) +#define concat4(a,b,c,d) concat4X(a, b, c, d) +#define concat4X(a,b,c,d) a ## b ## c ## d + +#endif /* UNICODE_TEMPLATE_INIT */ + +static int +compose_sym(canonclass_, VERSION) (unsigned long c) { + /* Look up canonicalclass table. */ + return (LOOKUPTBL(canon_class, CANON_CLASS, c)); +} + +static int +compose_sym(decompose_, VERSION) (unsigned long c, const unsigned long **seqp) +{ + /* Look up decomposition table. */ + int seqidx = LOOKUPTBL(decompose, DECOMP, c); + *seqp = SEQ(decompose) + (seqidx & ~DECOMP_COMPAT); + return (seqidx); +} + +static int +compose_sym(compose_, VERSION) (unsigned long c, + const struct composition **compp) +{ + /* Look up composition table. */ + int seqidx = LOOKUPTBL(compose, CANON_COMPOSE, c); + *compp = SEQ(compose) + (seqidx & 0xffff); + return (seqidx >> 16); +} + +static int +compose_sym(toupper_, VERSION) (unsigned long c, const unsigned long **seqp) { + int seqidx = LOOKUPTBL(toupper, CASEMAP, c); + *seqp = SEQ(toupper) + seqidx; + return (seqidx); +} + +static int +compose_sym(tolower_, VERSION) (unsigned long c, const unsigned long **seqp) { + int seqidx = LOOKUPTBL(tolower, CASEMAP, c); + *seqp = SEQ(tolower) + seqidx; + return (seqidx); +} + +static int +compose_sym(casemapctx_, VERSION) (unsigned long c) { + return (LOOKUPTBL(casemap_ctx, CASEMAP_CTX, c)); +} + +static int +compose_sym(casefolding_, VERSION) (unsigned long c, + const unsigned long **seqp) +{ + int seqidx = LOOKUPTBL(case_folding, CASE_FOLDING, c); + *seqp = SEQ(case_folding) + seqidx; + return (seqidx); +} diff --git a/contrib/idn/mdnkit/lib/unicodedata.c b/contrib/idn/mdnkit/lib/unicodedata_301.c index 54b33891..f63156c7 100644 --- a/contrib/idn/mdnkit/lib/unicodedata.c +++ b/contrib/idn/mdnkit/lib/unicodedata_301.c @@ -1,5 +1,5 @@ -/* $Id: unicodedata.c,v 1.8 2001/02/13 08:25:53 ishisone Exp $ */ -/* $-Id: generate_normalize_data.pl,v 1.5 2001/02/13 07:34:02 ishisone Exp -$ */ +/* $Id: unicodedata_301.c,v 1.1.2.1 2002/02/08 12:14:29 marka Exp $ */ +/* $-Id: generate_normalize_data.pl,v 1.7 2001/09/10 08:16:20 ishisone Exp -$ */ /* * Do not edit this file! * This file is generated from UnicodeData.txt, CompositionExclusions-1.txt, @@ -15,7 +15,7 @@ #define CANON_CLASS_BITS_1 7 #define CANON_CLASS_BITS_2 5 -static unsigned short canon_class_imap[] = { +static const unsigned short v301_canon_class_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 912, 784, 784, 784, 784, 784, 784, 784, 784, @@ -148,9 +148,9 @@ static unsigned short canon_class_imap[] = { 0, 0, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned char tbl[32]; -} canon_class_table[] = { +} v301_canon_class_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -356,7 +356,7 @@ static struct { #define CANON_COMPOSE_BITS_1 7 #define CANON_COMPOSE_BITS_2 5 -static unsigned short compose_imap[] = { +static const unsigned short v301_compose_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, @@ -473,9 +473,9 @@ static unsigned short compose_imap[] = { 0, 0, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned long tbl[32]; -} compose_table[] = { +} v301_compose_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -926,10 +926,7 @@ static struct { }}, }; -static struct composition { - unsigned long c2; /* 2nd character */ - unsigned long comp; /* composed character */ -} compose_seq[] = { +static const struct composition v301_compose_seq[] = { { 0x00000000, 0x00000000 }, { 0x00000338, 0x0000226e }, { 0x00000338, 0x00002260 }, { 0x00000338, 0x0000226f }, { 0x00000300, 0x000000c0 }, { 0x00000301, 0x000000c1 }, @@ -1402,7 +1399,7 @@ static struct composition { #define DECOMP_BITS_2 5 #define DECOMP_COMPAT 32768 -static unsigned short decompose_imap[] = { +static const unsigned short v301_decompose_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 912, 784, 784, 784, 784, 784, 784, 784, 784, @@ -1535,9 +1532,9 @@ static unsigned short decompose_imap[] = { 173, 174, 175, 176, 177, 178, 179, 180, }; -static struct { +static const struct { unsigned short tbl[32]; -} decompose_table[] = { +} v301_decompose_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2625,7 +2622,7 @@ static struct { 0, 0, 0, 0, 0, 0, 0, 0, }}, }; -static unsigned long decompose_seq[] = { +static const unsigned long v301_decompose_seq[] = { 0x00000000, 0x80000020, 0x00000020, 0x80000308, 0x80000061, 0x00000020, 0x80000304, 0x80000032, 0x80000033, 0x00000020, 0x80000301, 0x800003bc, @@ -4159,7 +4156,7 @@ static unsigned long decompose_seq[] = { #define CASEMAP_BITS_1 7 #define CASEMAP_BITS_2 5 -static unsigned short toupper_imap[] = { +static const unsigned short v301_toupper_imap[] = { 272, 400, 528, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 784, 656, 656, 656, 656, 656, 656, 656, 656, @@ -4276,9 +4273,9 @@ static unsigned short toupper_imap[] = { 0, 0, 52, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned short tbl[32]; -} toupper_table[] = { +} v301_toupper_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4545,7 +4542,7 @@ static struct { 1725, 1727, 1729, 1731, 1733, 0, 0, 0, 0, 0, }}, }; -static unsigned short tolower_imap[] = { +static const unsigned short v301_tolower_imap[] = { 272, 400, 528, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 784, 656, 656, 656, 656, 656, 656, 656, 656, @@ -4662,9 +4659,9 @@ static unsigned short tolower_imap[] = { 0, 46, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned short tbl[32]; -} tolower_table[] = { +} v301_tolower_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4901,7 +4898,7 @@ static struct { 1439, 1441, 1443, 1445, 1447, 0, 0, 0, 0, 0, }}, }; -static unsigned long toupper_seq[] = { +static const unsigned long v301_toupper_seq[] = { 0x00000000, 0x00000010, 0x80000041, 0x00000010, 0x80000042, 0x00000010, 0x80000043, 0x00000010, 0x80000044, 0x00000010, 0x80000045, 0x00000010, @@ -5338,7 +5335,7 @@ static unsigned long toupper_seq[] = { 0x8000ff39, 0x00000010, 0x8000ff3a, }; -static unsigned long tolower_seq[] = { +static const unsigned long v301_tolower_seq[] = { 0x00000000, 0x00000010, 0x80000061, 0x00000010, 0x80000062, 0x00000010, 0x80000063, 0x00000010, 0x80000064, 0x00000010, 0x80000065, 0x00000010, @@ -5716,7 +5713,7 @@ static unsigned long tolower_seq[] = { #define CTX_CASED 1 #define CTX_NSM 2 -static unsigned short casemap_ctx_imap[] = { +static const unsigned short v301_casemap_ctx_imap[] = { 272, 400, 528, 656, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 784, 912, 784, 784, 784, 784, 784, 784, 784, 784, @@ -5849,9 +5846,9 @@ static unsigned short casemap_ctx_imap[] = { 0, 1, 1, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned char tbl[32]; -} casemap_ctx_table[] = { +} v301_casemap_ctx_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6198,7 +6195,7 @@ static struct { #define CASE_FOLDING_BITS_1 7 #define CASE_FOLDING_BITS_2 5 -static unsigned short case_folding_imap[] = { +static const unsigned short v301_case_folding_imap[] = { 272, 400, 528, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 784, 656, 656, 656, 656, 656, 656, 656, 656, @@ -6315,9 +6312,9 @@ static unsigned short case_folding_imap[] = { 0, 50, 0, 0, 0, 0, 0, 0, }; -static struct { +static const struct { unsigned short tbl[32]; -} case_folding_table[] = { +} v301_case_folding_table[] = { {{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6574,7 +6571,7 @@ static struct { 900, 901, 902, 903, 904, 0, 0, 0, 0, 0, }}, }; -static unsigned long case_folding_seq[] = { +static const unsigned long v301_case_folding_seq[] = { 0x00000000, 0x80000061, 0x80000062, 0x80000063, 0x80000064, 0x80000065, 0x80000066, 0x80000067, 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, diff --git a/contrib/idn/mdnkit/lib/unicodedata_310.c b/contrib/idn/mdnkit/lib/unicodedata_310.c new file mode 100644 index 00000000..e80f1d57 --- /dev/null +++ b/contrib/idn/mdnkit/lib/unicodedata_310.c @@ -0,0 +1,7796 @@ +/* $Id: unicodedata_310.c,v 1.1.2.1 2002/02/08 12:14:31 marka Exp $ */ +/* $-Id: generate_normalize_data.pl,v 1.7 2001/09/10 08:16:20 ishisone Exp -$ */ +/* + * Do not edit this file! + * This file is generated from UnicodeData.txt, CompositionExclusions-1.txt, + * SpecialCasing.txt and CaseFolding.txt. + */ + + +/* + * Canonical Class + */ + +#define CANON_CLASS_BITS_0 9 +#define CANON_CLASS_BITS_1 7 +#define CANON_CLASS_BITS_2 5 + +static const unsigned short v310_canon_class_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 912, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 1040, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 4, 0, 0, 0, 0, + 0, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 6, 7, 8, 0, + 0, 0, 9, 10, 0, 0, 11, 12, + 13, 14, 15, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 17, 0, 0, 16, 18, 0, + 0, 16, 18, 0, 0, 16, 18, 0, + 0, 16, 18, 0, 0, 0, 18, 0, + 0, 0, 19, 0, 0, 0, 18, 0, + 0, 0, 18, 0, 0, 0, 20, 0, + 0, 21, 22, 0, 0, 23, 24, 0, + 25, 26, 0, 27, 28, 0, 29, 0, + 0, 30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 32, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 34, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 35, 0, 0, 36, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 38, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 39, 40, 41, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned char tbl[32]; +} v310_canon_class_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, + 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, + }}, + {{ + 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, + 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, + }}, + {{ + 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, + 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 234, 234, 233, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, + 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, + }}, + {{ + 230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, + 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, + }}, + {{ + 0, 24, 25, 0, 230, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, + }}, + {{ + 230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, + 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, + 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, + }}, + {{ + 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, + 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, + 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, + 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 220, 220, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, + 0, 220, 0, 216, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, + 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, + }}, + {{ + 130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 7, 0, 9, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, + 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, + }}, + {{ + 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, + 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, + }}, + {{ + 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, + 0, 0, 226, 216, 216, 216, 216, 216, 0, 0, 0, + 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, + }}, + {{ + 220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220, + 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, + 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; + +/* + * Canonical Composition + */ + +#define CANON_COMPOSE_BITS_0 9 +#define CANON_COMPOSE_BITS_1 7 +#define CANON_COMPOSE_BITS_2 5 + +static const unsigned short v310_compose_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 1, 2, 3, 0, 4, 5, 6, + 7, 0, 8, 9, 0, 10, 0, 11, + 0, 12, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 14, 15, 16, 0, + 17, 18, 19, 20, 0, 0, 21, 22, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 23, 24, 0, 0, 0, 25, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 28, 0, 29, 0, 30, 0, + 0, 0, 31, 0, 0, 32, 33, 0, + 0, 0, 34, 0, 0, 0, 35, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 37, 38, 39, 0, 40, 41, 0, + 42, 43, 44, 45, 0, 46, 47, 48, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 0, 50, 0, + 51, 52, 53, 54, 55, 56, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 57, 58, 59, 60, 61, 62, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned long tbl[32]; +} v310_compose_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 65537, 65538, 65539, 0, + }}, + {{ + 0, 1048580, 196628, 327703, 393244, 1114146, 65587, + 458804, 458811, 983106, 65617, 327762, 393303, 196701, + 589920, 1048681, 131193, 0, 524411, 458883, 458890, + 1245329, 131236, 393382, 131244, 589998, 393399, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 1048765, 196813, 327888, 393429, 1114331, 65772, + 458989, 524532, 917756, 131338, 327948, 393489, 196887, + 590106, 1048867, 131379, 0, 524597, 459069, 524612, + 1245516, 131423, 459105, 131432, 655722, 393588, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 196986, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 262525, 0, 65921, 65922, 131459, + 65925, 0, 0, 262534, 0, 0, 0, + 0, 65930, 0, 0, 0, 0, 262539, + 197007, 65938, 0, 65939, 0, 0, 0, + 262548, 0, 0, 0, + }}, + {{ + 0, 0, 262552, 0, 65948, 65949, 131486, + 65952, 0, 0, 262561, 0, 0, 0, + 0, 65957, 0, 0, 0, 0, 262566, + 197034, 65965, 0, 65966, 0, 0, 0, + 262575, 0, 0, 0, + }}, + {{ + 0, 0, 262579, 262583, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 131515, 131517, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 131519, 131521, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65987, 65988, + 0, 0, 0, 0, + }}, + {{ + 65989, 65990, 0, 0, 0, 0, 0, + 0, 65991, 65992, 65993, 65994, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 65995, + }}, + {{ + 328140, 328145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 328150, 328155, 0, 0, 0, 0, + 0, 0, 66016, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66017, 66018, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66019, + 66020, 66021, 66022, 0, 0, 0, 0, + 66023, 66024, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66025, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 459242, 0, 0, 0, + 262641, 0, 328181, 0, 459258, 0, 0, + 0, 0, 0, 262657, + }}, + {{ + 0, 66053, 0, 0, 0, 393734, 0, + 0, 0, 328204, 0, 0, 66065, 0, + 66066, 0, 0, 524819, 0, 0, 0, + 262683, 0, 393759, 0, 524837, 0, 0, + 0, 0, 0, 262701, + }}, + {{ + 0, 131633, 0, 0, 0, 524851, 0, + 0, 0, 393787, 197185, 197188, 0, 0, + 66119, 0, 0, 0, 131656, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66122, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 131659, 0, 0, 66125, 0, + 197198, 131665, 66131, 262740, 0, 66136, 0, + 0, 0, 66137, 0, + }}, + {{ + 0, 0, 0, 262746, 0, 0, 0, + 66142, 0, 0, 0, 66143, 0, 66144, + 0, 0, 131681, 0, 0, 66147, 0, + 197220, 131687, 66153, 262762, 0, 66158, 0, + 0, 0, 66159, 0, + }}, + {{ + 0, 0, 0, 262768, 0, 0, 0, + 66164, 0, 0, 0, 66165, 0, 66166, + 0, 0, 0, 0, 0, 0, 0, + 0, 66167, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 66168, + 66169, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66170, 66171, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 66172, 66173, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 197246, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 66177, 0, 66178, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 66179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66180, 0, 0, + 66181, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 66182, 0, 0, 0, 0, 0, + 0, 0, 66183, 0, 0, 66184, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 131721, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 197259, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66190, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 131727, + 66193, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66194, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66195, + }}, + {{ + 0, 0, 0, 0, 0, 0, 197268, + 0, 0, 0, 66199, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 131736, + 66202, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 197275, 0, 0, + 66206, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 66207, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66208, 66209, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 66210, 66211, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 66212, 66213, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 131750, 131752, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66218, 66219, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 66220, 66221, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 262830, 262834, 66230, 66231, 66232, 66233, 66234, + 66235, 262844, 262848, 66244, 66245, 66246, 66247, + 66248, 66249, 131786, 131788, 0, 0, 0, + 0, 0, 0, 131790, 131792, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 262866, 262870, 66266, 66267, 66268, 66269, 66270, + 66271, 262880, 262884, 66280, 66281, 66282, 66283, + 66284, 66285, 197358, 197361, 0, 0, 0, + 0, 0, 0, 197364, 197367, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 131834, 131836, 0, 0, 0, 0, 0, + 0, 131838, 131840, 0, 0, 0, 0, + 0, 0, 197378, 197381, 0, 0, 0, + 0, 0, 0, 0, 197384, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 262923, 262927, 66323, 66324, 66325, 66326, 66327, + 66328, 262937, 262941, 66337, 66338, 66339, 66340, + 66341, 66342, 66343, 0, 0, 0, 66344, + 0, 0, 0, 0, 0, 0, 0, + 66345, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66346, 0, 0, 0, 0, 0, + 0, 0, 0, 197419, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66350, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66351, 0, 0, 0, 0, 0, + 0, 0, 197424, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 66355, 0, 66356, 0, 66357, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 66358, 0, 66359, 0, 66360, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 66361, 0, 0, 0, + 0, 66362, 0, 0, 66363, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 66364, 0, 66365, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 66366, 0, 0, 0, + }}, + {{ + 0, 0, 0, 66367, 0, 66368, 0, + 0, 66369, 0, 0, 0, 0, 66370, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 66371, 0, 0, 66372, 66373, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 66374, 66375, 0, + 0, 66376, 66377, 0, 0, 66378, 66379, + 66380, 66381, 0, 0, + }}, + {{ + 0, 0, 66382, 66383, 0, 0, 66384, + 66385, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 66386, 66387, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 66388, 0, 0, 0, 0, + 0, 66389, 66390, 0, 66391, 0, 0, + 0, 0, 0, 0, 66392, 66393, 66394, + 66395, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66396, + 0, 0, 0, 0, 66397, 0, 66398, + 0, 66399, 0, 66400, 0, 66401, 0, + 66402, 0, 66403, 0, 66404, 0, 66405, + 0, 66406, 0, 66407, + }}, + {{ + 0, 66408, 0, 0, 66409, 0, 66410, + 0, 66411, 0, 0, 0, 0, 0, + 0, 131948, 0, 0, 131950, 0, 0, + 131952, 0, 0, 131954, 0, 0, 131956, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66422, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 66423, + 0, 0, 0, 0, 66424, 0, 66425, + 0, 66426, 0, 66427, 0, 66428, 0, + 66429, 0, 66430, 0, 66431, 0, 66432, + 0, 66433, 0, 66434, + }}, + {{ + 0, 66435, 0, 0, 66436, 0, 66437, + 0, 66438, 0, 0, 0, 0, 0, + 0, 131975, 0, 0, 131977, 0, 0, + 131979, 0, 0, 131981, 0, 0, 131983, + 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66449, 66450, 66451, 66452, 0, 0, + 0, 0, 0, 0, 0, 0, 0, + 0, 66453, 0, 0, + }}, +}; + +static const struct composition v310_compose_seq[] = { + { 0x00000000, 0x00000000 }, { 0x00000338, 0x0000226e }, + { 0x00000338, 0x00002260 }, { 0x00000338, 0x0000226f }, + { 0x00000300, 0x000000c0 }, { 0x00000301, 0x000000c1 }, + { 0x00000302, 0x000000c2 }, { 0x00000303, 0x000000c3 }, + { 0x00000304, 0x00000100 }, { 0x00000306, 0x00000102 }, + { 0x00000307, 0x00000226 }, { 0x00000308, 0x000000c4 }, + { 0x00000309, 0x00001ea2 }, { 0x0000030a, 0x000000c5 }, + { 0x0000030c, 0x000001cd }, { 0x0000030f, 0x00000200 }, + { 0x00000311, 0x00000202 }, { 0x00000323, 0x00001ea0 }, + { 0x00000325, 0x00001e00 }, { 0x00000328, 0x00000104 }, + { 0x00000307, 0x00001e02 }, { 0x00000323, 0x00001e04 }, + { 0x00000331, 0x00001e06 }, { 0x00000301, 0x00000106 }, + { 0x00000302, 0x00000108 }, { 0x00000307, 0x0000010a }, + { 0x0000030c, 0x0000010c }, { 0x00000327, 0x000000c7 }, + { 0x00000307, 0x00001e0a }, { 0x0000030c, 0x0000010e }, + { 0x00000323, 0x00001e0c }, { 0x00000327, 0x00001e10 }, + { 0x0000032d, 0x00001e12 }, { 0x00000331, 0x00001e0e }, + { 0x00000300, 0x000000c8 }, { 0x00000301, 0x000000c9 }, + { 0x00000302, 0x000000ca }, { 0x00000303, 0x00001ebc }, + { 0x00000304, 0x00000112 }, { 0x00000306, 0x00000114 }, + { 0x00000307, 0x00000116 }, { 0x00000308, 0x000000cb }, + { 0x00000309, 0x00001eba }, { 0x0000030c, 0x0000011a }, + { 0x0000030f, 0x00000204 }, { 0x00000311, 0x00000206 }, + { 0x00000323, 0x00001eb8 }, { 0x00000327, 0x00000228 }, + { 0x00000328, 0x00000118 }, { 0x0000032d, 0x00001e18 }, + { 0x00000330, 0x00001e1a }, { 0x00000307, 0x00001e1e }, + { 0x00000301, 0x000001f4 }, { 0x00000302, 0x0000011c }, + { 0x00000304, 0x00001e20 }, { 0x00000306, 0x0000011e }, + { 0x00000307, 0x00000120 }, { 0x0000030c, 0x000001e6 }, + { 0x00000327, 0x00000122 }, { 0x00000302, 0x00000124 }, + { 0x00000307, 0x00001e22 }, { 0x00000308, 0x00001e26 }, + { 0x0000030c, 0x0000021e }, { 0x00000323, 0x00001e24 }, + { 0x00000327, 0x00001e28 }, { 0x0000032e, 0x00001e2a }, + { 0x00000300, 0x000000cc }, { 0x00000301, 0x000000cd }, + { 0x00000302, 0x000000ce }, { 0x00000303, 0x00000128 }, + { 0x00000304, 0x0000012a }, { 0x00000306, 0x0000012c }, + { 0x00000307, 0x00000130 }, { 0x00000308, 0x000000cf }, + { 0x00000309, 0x00001ec8 }, { 0x0000030c, 0x000001cf }, + { 0x0000030f, 0x00000208 }, { 0x00000311, 0x0000020a }, + { 0x00000323, 0x00001eca }, { 0x00000328, 0x0000012e }, + { 0x00000330, 0x00001e2c }, { 0x00000302, 0x00000134 }, + { 0x00000301, 0x00001e30 }, { 0x0000030c, 0x000001e8 }, + { 0x00000323, 0x00001e32 }, { 0x00000327, 0x00000136 }, + { 0x00000331, 0x00001e34 }, { 0x00000301, 0x00000139 }, + { 0x0000030c, 0x0000013d }, { 0x00000323, 0x00001e36 }, + { 0x00000327, 0x0000013b }, { 0x0000032d, 0x00001e3c }, + { 0x00000331, 0x00001e3a }, { 0x00000301, 0x00001e3e }, + { 0x00000307, 0x00001e40 }, { 0x00000323, 0x00001e42 }, + { 0x00000300, 0x000001f8 }, { 0x00000301, 0x00000143 }, + { 0x00000303, 0x000000d1 }, { 0x00000307, 0x00001e44 }, + { 0x0000030c, 0x00000147 }, { 0x00000323, 0x00001e46 }, + { 0x00000327, 0x00000145 }, { 0x0000032d, 0x00001e4a }, + { 0x00000331, 0x00001e48 }, { 0x00000300, 0x000000d2 }, + { 0x00000301, 0x000000d3 }, { 0x00000302, 0x000000d4 }, + { 0x00000303, 0x000000d5 }, { 0x00000304, 0x0000014c }, + { 0x00000306, 0x0000014e }, { 0x00000307, 0x0000022e }, + { 0x00000308, 0x000000d6 }, { 0x00000309, 0x00001ece }, + { 0x0000030b, 0x00000150 }, { 0x0000030c, 0x000001d1 }, + { 0x0000030f, 0x0000020c }, { 0x00000311, 0x0000020e }, + { 0x0000031b, 0x000001a0 }, { 0x00000323, 0x00001ecc }, + { 0x00000328, 0x000001ea }, { 0x00000301, 0x00001e54 }, + { 0x00000307, 0x00001e56 }, { 0x00000301, 0x00000154 }, + { 0x00000307, 0x00001e58 }, { 0x0000030c, 0x00000158 }, + { 0x0000030f, 0x00000210 }, { 0x00000311, 0x00000212 }, + { 0x00000323, 0x00001e5a }, { 0x00000327, 0x00000156 }, + { 0x00000331, 0x00001e5e }, { 0x00000301, 0x0000015a }, + { 0x00000302, 0x0000015c }, { 0x00000307, 0x00001e60 }, + { 0x0000030c, 0x00000160 }, { 0x00000323, 0x00001e62 }, + { 0x00000326, 0x00000218 }, { 0x00000327, 0x0000015e }, + { 0x00000307, 0x00001e6a }, { 0x0000030c, 0x00000164 }, + { 0x00000323, 0x00001e6c }, { 0x00000326, 0x0000021a }, + { 0x00000327, 0x00000162 }, { 0x0000032d, 0x00001e70 }, + { 0x00000331, 0x00001e6e }, { 0x00000300, 0x000000d9 }, + { 0x00000301, 0x000000da }, { 0x00000302, 0x000000db }, + { 0x00000303, 0x00000168 }, { 0x00000304, 0x0000016a }, + { 0x00000306, 0x0000016c }, { 0x00000308, 0x000000dc }, + { 0x00000309, 0x00001ee6 }, { 0x0000030a, 0x0000016e }, + { 0x0000030b, 0x00000170 }, { 0x0000030c, 0x000001d3 }, + { 0x0000030f, 0x00000214 }, { 0x00000311, 0x00000216 }, + { 0x0000031b, 0x000001af }, { 0x00000323, 0x00001ee4 }, + { 0x00000324, 0x00001e72 }, { 0x00000328, 0x00000172 }, + { 0x0000032d, 0x00001e76 }, { 0x00000330, 0x00001e74 }, + { 0x00000303, 0x00001e7c }, { 0x00000323, 0x00001e7e }, + { 0x00000300, 0x00001e80 }, { 0x00000301, 0x00001e82 }, + { 0x00000302, 0x00000174 }, { 0x00000307, 0x00001e86 }, + { 0x00000308, 0x00001e84 }, { 0x00000323, 0x00001e88 }, + { 0x00000307, 0x00001e8a }, { 0x00000308, 0x00001e8c }, + { 0x00000300, 0x00001ef2 }, { 0x00000301, 0x000000dd }, + { 0x00000302, 0x00000176 }, { 0x00000303, 0x00001ef8 }, + { 0x00000304, 0x00000232 }, { 0x00000307, 0x00001e8e }, + { 0x00000308, 0x00000178 }, { 0x00000309, 0x00001ef6 }, + { 0x00000323, 0x00001ef4 }, { 0x00000301, 0x00000179 }, + { 0x00000302, 0x00001e90 }, { 0x00000307, 0x0000017b }, + { 0x0000030c, 0x0000017d }, { 0x00000323, 0x00001e92 }, + { 0x00000331, 0x00001e94 }, { 0x00000300, 0x000000e0 }, + { 0x00000301, 0x000000e1 }, { 0x00000302, 0x000000e2 }, + { 0x00000303, 0x000000e3 }, { 0x00000304, 0x00000101 }, + { 0x00000306, 0x00000103 }, { 0x00000307, 0x00000227 }, + { 0x00000308, 0x000000e4 }, { 0x00000309, 0x00001ea3 }, + { 0x0000030a, 0x000000e5 }, { 0x0000030c, 0x000001ce }, + { 0x0000030f, 0x00000201 }, { 0x00000311, 0x00000203 }, + { 0x00000323, 0x00001ea1 }, { 0x00000325, 0x00001e01 }, + { 0x00000328, 0x00000105 }, { 0x00000307, 0x00001e03 }, + { 0x00000323, 0x00001e05 }, { 0x00000331, 0x00001e07 }, + { 0x00000301, 0x00000107 }, { 0x00000302, 0x00000109 }, + { 0x00000307, 0x0000010b }, { 0x0000030c, 0x0000010d }, + { 0x00000327, 0x000000e7 }, { 0x00000307, 0x00001e0b }, + { 0x0000030c, 0x0000010f }, { 0x00000323, 0x00001e0d }, + { 0x00000327, 0x00001e11 }, { 0x0000032d, 0x00001e13 }, + { 0x00000331, 0x00001e0f }, { 0x00000300, 0x000000e8 }, + { 0x00000301, 0x000000e9 }, { 0x00000302, 0x000000ea }, + { 0x00000303, 0x00001ebd }, { 0x00000304, 0x00000113 }, + { 0x00000306, 0x00000115 }, { 0x00000307, 0x00000117 }, + { 0x00000308, 0x000000eb }, { 0x00000309, 0x00001ebb }, + { 0x0000030c, 0x0000011b }, { 0x0000030f, 0x00000205 }, + { 0x00000311, 0x00000207 }, { 0x00000323, 0x00001eb9 }, + { 0x00000327, 0x00000229 }, { 0x00000328, 0x00000119 }, + { 0x0000032d, 0x00001e19 }, { 0x00000330, 0x00001e1b }, + { 0x00000307, 0x00001e1f }, { 0x00000301, 0x000001f5 }, + { 0x00000302, 0x0000011d }, { 0x00000304, 0x00001e21 }, + { 0x00000306, 0x0000011f }, { 0x00000307, 0x00000121 }, + { 0x0000030c, 0x000001e7 }, { 0x00000327, 0x00000123 }, + { 0x00000302, 0x00000125 }, { 0x00000307, 0x00001e23 }, + { 0x00000308, 0x00001e27 }, { 0x0000030c, 0x0000021f }, + { 0x00000323, 0x00001e25 }, { 0x00000327, 0x00001e29 }, + { 0x0000032e, 0x00001e2b }, { 0x00000331, 0x00001e96 }, + { 0x00000300, 0x000000ec }, { 0x00000301, 0x000000ed }, + { 0x00000302, 0x000000ee }, { 0x00000303, 0x00000129 }, + { 0x00000304, 0x0000012b }, { 0x00000306, 0x0000012d }, + { 0x00000308, 0x000000ef }, { 0x00000309, 0x00001ec9 }, + { 0x0000030c, 0x000001d0 }, { 0x0000030f, 0x00000209 }, + { 0x00000311, 0x0000020b }, { 0x00000323, 0x00001ecb }, + { 0x00000328, 0x0000012f }, { 0x00000330, 0x00001e2d }, + { 0x00000302, 0x00000135 }, { 0x0000030c, 0x000001f0 }, + { 0x00000301, 0x00001e31 }, { 0x0000030c, 0x000001e9 }, + { 0x00000323, 0x00001e33 }, { 0x00000327, 0x00000137 }, + { 0x00000331, 0x00001e35 }, { 0x00000301, 0x0000013a }, + { 0x0000030c, 0x0000013e }, { 0x00000323, 0x00001e37 }, + { 0x00000327, 0x0000013c }, { 0x0000032d, 0x00001e3d }, + { 0x00000331, 0x00001e3b }, { 0x00000301, 0x00001e3f }, + { 0x00000307, 0x00001e41 }, { 0x00000323, 0x00001e43 }, + { 0x00000300, 0x000001f9 }, { 0x00000301, 0x00000144 }, + { 0x00000303, 0x000000f1 }, { 0x00000307, 0x00001e45 }, + { 0x0000030c, 0x00000148 }, { 0x00000323, 0x00001e47 }, + { 0x00000327, 0x00000146 }, { 0x0000032d, 0x00001e4b }, + { 0x00000331, 0x00001e49 }, { 0x00000300, 0x000000f2 }, + { 0x00000301, 0x000000f3 }, { 0x00000302, 0x000000f4 }, + { 0x00000303, 0x000000f5 }, { 0x00000304, 0x0000014d }, + { 0x00000306, 0x0000014f }, { 0x00000307, 0x0000022f }, + { 0x00000308, 0x000000f6 }, { 0x00000309, 0x00001ecf }, + { 0x0000030b, 0x00000151 }, { 0x0000030c, 0x000001d2 }, + { 0x0000030f, 0x0000020d }, { 0x00000311, 0x0000020f }, + { 0x0000031b, 0x000001a1 }, { 0x00000323, 0x00001ecd }, + { 0x00000328, 0x000001eb }, { 0x00000301, 0x00001e55 }, + { 0x00000307, 0x00001e57 }, { 0x00000301, 0x00000155 }, + { 0x00000307, 0x00001e59 }, { 0x0000030c, 0x00000159 }, + { 0x0000030f, 0x00000211 }, { 0x00000311, 0x00000213 }, + { 0x00000323, 0x00001e5b }, { 0x00000327, 0x00000157 }, + { 0x00000331, 0x00001e5f }, { 0x00000301, 0x0000015b }, + { 0x00000302, 0x0000015d }, { 0x00000307, 0x00001e61 }, + { 0x0000030c, 0x00000161 }, { 0x00000323, 0x00001e63 }, + { 0x00000326, 0x00000219 }, { 0x00000327, 0x0000015f }, + { 0x00000307, 0x00001e6b }, { 0x00000308, 0x00001e97 }, + { 0x0000030c, 0x00000165 }, { 0x00000323, 0x00001e6d }, + { 0x00000326, 0x0000021b }, { 0x00000327, 0x00000163 }, + { 0x0000032d, 0x00001e71 }, { 0x00000331, 0x00001e6f }, + { 0x00000300, 0x000000f9 }, { 0x00000301, 0x000000fa }, + { 0x00000302, 0x000000fb }, { 0x00000303, 0x00000169 }, + { 0x00000304, 0x0000016b }, { 0x00000306, 0x0000016d }, + { 0x00000308, 0x000000fc }, { 0x00000309, 0x00001ee7 }, + { 0x0000030a, 0x0000016f }, { 0x0000030b, 0x00000171 }, + { 0x0000030c, 0x000001d4 }, { 0x0000030f, 0x00000215 }, + { 0x00000311, 0x00000217 }, { 0x0000031b, 0x000001b0 }, + { 0x00000323, 0x00001ee5 }, { 0x00000324, 0x00001e73 }, + { 0x00000328, 0x00000173 }, { 0x0000032d, 0x00001e77 }, + { 0x00000330, 0x00001e75 }, { 0x00000303, 0x00001e7d }, + { 0x00000323, 0x00001e7f }, { 0x00000300, 0x00001e81 }, + { 0x00000301, 0x00001e83 }, { 0x00000302, 0x00000175 }, + { 0x00000307, 0x00001e87 }, { 0x00000308, 0x00001e85 }, + { 0x0000030a, 0x00001e98 }, { 0x00000323, 0x00001e89 }, + { 0x00000307, 0x00001e8b }, { 0x00000308, 0x00001e8d }, + { 0x00000300, 0x00001ef3 }, { 0x00000301, 0x000000fd }, + { 0x00000302, 0x00000177 }, { 0x00000303, 0x00001ef9 }, + { 0x00000304, 0x00000233 }, { 0x00000307, 0x00001e8f }, + { 0x00000308, 0x000000ff }, { 0x00000309, 0x00001ef7 }, + { 0x0000030a, 0x00001e99 }, { 0x00000323, 0x00001ef5 }, + { 0x00000301, 0x0000017a }, { 0x00000302, 0x00001e91 }, + { 0x00000307, 0x0000017c }, { 0x0000030c, 0x0000017e }, + { 0x00000323, 0x00001e93 }, { 0x00000331, 0x00001e95 }, + { 0x00000300, 0x00001fed }, { 0x00000301, 0x00000385 }, + { 0x00000342, 0x00001fc1 }, { 0x00000300, 0x00001ea6 }, + { 0x00000301, 0x00001ea4 }, { 0x00000303, 0x00001eaa }, + { 0x00000309, 0x00001ea8 }, { 0x00000304, 0x000001de }, + { 0x00000301, 0x000001fa }, { 0x00000301, 0x000001fc }, + { 0x00000304, 0x000001e2 }, { 0x00000301, 0x00001e08 }, + { 0x00000300, 0x00001ec0 }, { 0x00000301, 0x00001ebe }, + { 0x00000303, 0x00001ec4 }, { 0x00000309, 0x00001ec2 }, + { 0x00000301, 0x00001e2e }, { 0x00000300, 0x00001ed2 }, + { 0x00000301, 0x00001ed0 }, { 0x00000303, 0x00001ed6 }, + { 0x00000309, 0x00001ed4 }, { 0x00000301, 0x00001e4c }, + { 0x00000304, 0x0000022c }, { 0x00000308, 0x00001e4e }, + { 0x00000304, 0x0000022a }, { 0x00000301, 0x000001fe }, + { 0x00000300, 0x000001db }, { 0x00000301, 0x000001d7 }, + { 0x00000304, 0x000001d5 }, { 0x0000030c, 0x000001d9 }, + { 0x00000300, 0x00001ea7 }, { 0x00000301, 0x00001ea5 }, + { 0x00000303, 0x00001eab }, { 0x00000309, 0x00001ea9 }, + { 0x00000304, 0x000001df }, { 0x00000301, 0x000001fb }, + { 0x00000301, 0x000001fd }, { 0x00000304, 0x000001e3 }, + { 0x00000301, 0x00001e09 }, { 0x00000300, 0x00001ec1 }, + { 0x00000301, 0x00001ebf }, { 0x00000303, 0x00001ec5 }, + { 0x00000309, 0x00001ec3 }, { 0x00000301, 0x00001e2f }, + { 0x00000300, 0x00001ed3 }, { 0x00000301, 0x00001ed1 }, + { 0x00000303, 0x00001ed7 }, { 0x00000309, 0x00001ed5 }, + { 0x00000301, 0x00001e4d }, { 0x00000304, 0x0000022d }, + { 0x00000308, 0x00001e4f }, { 0x00000304, 0x0000022b }, + { 0x00000301, 0x000001ff }, { 0x00000300, 0x000001dc }, + { 0x00000301, 0x000001d8 }, { 0x00000304, 0x000001d6 }, + { 0x0000030c, 0x000001da }, { 0x00000300, 0x00001eb0 }, + { 0x00000301, 0x00001eae }, { 0x00000303, 0x00001eb4 }, + { 0x00000309, 0x00001eb2 }, { 0x00000300, 0x00001eb1 }, + { 0x00000301, 0x00001eaf }, { 0x00000303, 0x00001eb5 }, + { 0x00000309, 0x00001eb3 }, { 0x00000300, 0x00001e14 }, + { 0x00000301, 0x00001e16 }, { 0x00000300, 0x00001e15 }, + { 0x00000301, 0x00001e17 }, { 0x00000300, 0x00001e50 }, + { 0x00000301, 0x00001e52 }, { 0x00000300, 0x00001e51 }, + { 0x00000301, 0x00001e53 }, { 0x00000307, 0x00001e64 }, + { 0x00000307, 0x00001e65 }, { 0x00000307, 0x00001e66 }, + { 0x00000307, 0x00001e67 }, { 0x00000301, 0x00001e78 }, + { 0x00000301, 0x00001e79 }, { 0x00000308, 0x00001e7a }, + { 0x00000308, 0x00001e7b }, { 0x00000307, 0x00001e9b }, + { 0x00000300, 0x00001edc }, { 0x00000301, 0x00001eda }, + { 0x00000303, 0x00001ee0 }, { 0x00000309, 0x00001ede }, + { 0x00000323, 0x00001ee2 }, { 0x00000300, 0x00001edd }, + { 0x00000301, 0x00001edb }, { 0x00000303, 0x00001ee1 }, + { 0x00000309, 0x00001edf }, { 0x00000323, 0x00001ee3 }, + { 0x00000300, 0x00001eea }, { 0x00000301, 0x00001ee8 }, + { 0x00000303, 0x00001eee }, { 0x00000309, 0x00001eec }, + { 0x00000323, 0x00001ef0 }, { 0x00000300, 0x00001eeb }, + { 0x00000301, 0x00001ee9 }, { 0x00000303, 0x00001eef }, + { 0x00000309, 0x00001eed }, { 0x00000323, 0x00001ef1 }, + { 0x0000030c, 0x000001ee }, { 0x00000304, 0x000001ec }, + { 0x00000304, 0x000001ed }, { 0x00000304, 0x000001e0 }, + { 0x00000304, 0x000001e1 }, { 0x00000306, 0x00001e1c }, + { 0x00000306, 0x00001e1d }, { 0x00000304, 0x00000230 }, + { 0x00000304, 0x00000231 }, { 0x0000030c, 0x000001ef }, + { 0x00000300, 0x00001fba }, { 0x00000301, 0x00000386 }, + { 0x00000304, 0x00001fb9 }, { 0x00000306, 0x00001fb8 }, + { 0x00000313, 0x00001f08 }, { 0x00000314, 0x00001f09 }, + { 0x00000345, 0x00001fbc }, { 0x00000300, 0x00001fc8 }, + { 0x00000301, 0x00000388 }, { 0x00000313, 0x00001f18 }, + { 0x00000314, 0x00001f19 }, { 0x00000300, 0x00001fca }, + { 0x00000301, 0x00000389 }, { 0x00000313, 0x00001f28 }, + { 0x00000314, 0x00001f29 }, { 0x00000345, 0x00001fcc }, + { 0x00000300, 0x00001fda }, { 0x00000301, 0x0000038a }, + { 0x00000304, 0x00001fd9 }, { 0x00000306, 0x00001fd8 }, + { 0x00000308, 0x000003aa }, { 0x00000313, 0x00001f38 }, + { 0x00000314, 0x00001f39 }, { 0x00000300, 0x00001ff8 }, + { 0x00000301, 0x0000038c }, { 0x00000313, 0x00001f48 }, + { 0x00000314, 0x00001f49 }, { 0x00000314, 0x00001fec }, + { 0x00000300, 0x00001fea }, { 0x00000301, 0x0000038e }, + { 0x00000304, 0x00001fe9 }, { 0x00000306, 0x00001fe8 }, + { 0x00000308, 0x000003ab }, { 0x00000314, 0x00001f59 }, + { 0x00000300, 0x00001ffa }, { 0x00000301, 0x0000038f }, + { 0x00000313, 0x00001f68 }, { 0x00000314, 0x00001f69 }, + { 0x00000345, 0x00001ffc }, { 0x00000345, 0x00001fb4 }, + { 0x00000345, 0x00001fc4 }, { 0x00000300, 0x00001f70 }, + { 0x00000301, 0x000003ac }, { 0x00000304, 0x00001fb1 }, + { 0x00000306, 0x00001fb0 }, { 0x00000313, 0x00001f00 }, + { 0x00000314, 0x00001f01 }, { 0x00000342, 0x00001fb6 }, + { 0x00000345, 0x00001fb3 }, { 0x00000300, 0x00001f72 }, + { 0x00000301, 0x000003ad }, { 0x00000313, 0x00001f10 }, + { 0x00000314, 0x00001f11 }, { 0x00000300, 0x00001f74 }, + { 0x00000301, 0x000003ae }, { 0x00000313, 0x00001f20 }, + { 0x00000314, 0x00001f21 }, { 0x00000342, 0x00001fc6 }, + { 0x00000345, 0x00001fc3 }, { 0x00000300, 0x00001f76 }, + { 0x00000301, 0x000003af }, { 0x00000304, 0x00001fd1 }, + { 0x00000306, 0x00001fd0 }, { 0x00000308, 0x000003ca }, + { 0x00000313, 0x00001f30 }, { 0x00000314, 0x00001f31 }, + { 0x00000342, 0x00001fd6 }, { 0x00000300, 0x00001f78 }, + { 0x00000301, 0x000003cc }, { 0x00000313, 0x00001f40 }, + { 0x00000314, 0x00001f41 }, { 0x00000313, 0x00001fe4 }, + { 0x00000314, 0x00001fe5 }, { 0x00000300, 0x00001f7a }, + { 0x00000301, 0x000003cd }, { 0x00000304, 0x00001fe1 }, + { 0x00000306, 0x00001fe0 }, { 0x00000308, 0x000003cb }, + { 0x00000313, 0x00001f50 }, { 0x00000314, 0x00001f51 }, + { 0x00000342, 0x00001fe6 }, { 0x00000300, 0x00001f7c }, + { 0x00000301, 0x000003ce }, { 0x00000313, 0x00001f60 }, + { 0x00000314, 0x00001f61 }, { 0x00000342, 0x00001ff6 }, + { 0x00000345, 0x00001ff3 }, { 0x00000300, 0x00001fd2 }, + { 0x00000301, 0x00000390 }, { 0x00000342, 0x00001fd7 }, + { 0x00000300, 0x00001fe2 }, { 0x00000301, 0x000003b0 }, + { 0x00000342, 0x00001fe7 }, { 0x00000345, 0x00001ff4 }, + { 0x00000301, 0x000003d3 }, { 0x00000308, 0x000003d4 }, + { 0x00000308, 0x00000407 }, { 0x00000306, 0x000004d0 }, + { 0x00000308, 0x000004d2 }, { 0x00000301, 0x00000403 }, + { 0x00000300, 0x00000400 }, { 0x00000306, 0x000004d6 }, + { 0x00000308, 0x00000401 }, { 0x00000306, 0x000004c1 }, + { 0x00000308, 0x000004dc }, { 0x00000308, 0x000004de }, + { 0x00000300, 0x0000040d }, { 0x00000304, 0x000004e2 }, + { 0x00000306, 0x00000419 }, { 0x00000308, 0x000004e4 }, + { 0x00000301, 0x0000040c }, { 0x00000308, 0x000004e6 }, + { 0x00000304, 0x000004ee }, { 0x00000306, 0x0000040e }, + { 0x00000308, 0x000004f0 }, { 0x0000030b, 0x000004f2 }, + { 0x00000308, 0x000004f4 }, { 0x00000308, 0x000004f8 }, + { 0x00000308, 0x000004ec }, { 0x00000306, 0x000004d1 }, + { 0x00000308, 0x000004d3 }, { 0x00000301, 0x00000453 }, + { 0x00000300, 0x00000450 }, { 0x00000306, 0x000004d7 }, + { 0x00000308, 0x00000451 }, { 0x00000306, 0x000004c2 }, + { 0x00000308, 0x000004dd }, { 0x00000308, 0x000004df }, + { 0x00000300, 0x0000045d }, { 0x00000304, 0x000004e3 }, + { 0x00000306, 0x00000439 }, { 0x00000308, 0x000004e5 }, + { 0x00000301, 0x0000045c }, { 0x00000308, 0x000004e7 }, + { 0x00000304, 0x000004ef }, { 0x00000306, 0x0000045e }, + { 0x00000308, 0x000004f1 }, { 0x0000030b, 0x000004f3 }, + { 0x00000308, 0x000004f5 }, { 0x00000308, 0x000004f9 }, + { 0x00000308, 0x000004ed }, { 0x00000308, 0x00000457 }, + { 0x0000030f, 0x00000476 }, { 0x0000030f, 0x00000477 }, + { 0x00000308, 0x000004da }, { 0x00000308, 0x000004db }, + { 0x00000308, 0x000004ea }, { 0x00000308, 0x000004eb }, + { 0x00000653, 0x00000622 }, { 0x00000654, 0x00000623 }, + { 0x00000655, 0x00000625 }, { 0x00000654, 0x00000624 }, + { 0x00000654, 0x00000626 }, { 0x00000654, 0x000006c2 }, + { 0x00000654, 0x000006d3 }, { 0x00000654, 0x000006c0 }, + { 0x0000093c, 0x00000929 }, { 0x0000093c, 0x00000931 }, + { 0x0000093c, 0x00000934 }, { 0x000009be, 0x000009cb }, + { 0x000009d7, 0x000009cc }, { 0x00000b3e, 0x00000b4b }, + { 0x00000b56, 0x00000b48 }, { 0x00000b57, 0x00000b4c }, + { 0x00000bd7, 0x00000b94 }, { 0x00000bbe, 0x00000bca }, + { 0x00000bd7, 0x00000bcc }, { 0x00000bbe, 0x00000bcb }, + { 0x00000c56, 0x00000c48 }, { 0x00000cd5, 0x00000cc0 }, + { 0x00000cc2, 0x00000cca }, { 0x00000cd5, 0x00000cc7 }, + { 0x00000cd6, 0x00000cc8 }, { 0x00000cd5, 0x00000ccb }, + { 0x00000d3e, 0x00000d4a }, { 0x00000d57, 0x00000d4c }, + { 0x00000d3e, 0x00000d4b }, { 0x00000dca, 0x00000dda }, + { 0x00000dcf, 0x00000ddc }, { 0x00000ddf, 0x00000dde }, + { 0x00000dca, 0x00000ddd }, { 0x0000102e, 0x00001026 }, + { 0x00000304, 0x00001e38 }, { 0x00000304, 0x00001e39 }, + { 0x00000304, 0x00001e5c }, { 0x00000304, 0x00001e5d }, + { 0x00000307, 0x00001e68 }, { 0x00000307, 0x00001e69 }, + { 0x00000302, 0x00001eac }, { 0x00000306, 0x00001eb6 }, + { 0x00000302, 0x00001ead }, { 0x00000306, 0x00001eb7 }, + { 0x00000302, 0x00001ec6 }, { 0x00000302, 0x00001ec7 }, + { 0x00000302, 0x00001ed8 }, { 0x00000302, 0x00001ed9 }, + { 0x00000300, 0x00001f02 }, { 0x00000301, 0x00001f04 }, + { 0x00000342, 0x00001f06 }, { 0x00000345, 0x00001f80 }, + { 0x00000300, 0x00001f03 }, { 0x00000301, 0x00001f05 }, + { 0x00000342, 0x00001f07 }, { 0x00000345, 0x00001f81 }, + { 0x00000345, 0x00001f82 }, { 0x00000345, 0x00001f83 }, + { 0x00000345, 0x00001f84 }, { 0x00000345, 0x00001f85 }, + { 0x00000345, 0x00001f86 }, { 0x00000345, 0x00001f87 }, + { 0x00000300, 0x00001f0a }, { 0x00000301, 0x00001f0c }, + { 0x00000342, 0x00001f0e }, { 0x00000345, 0x00001f88 }, + { 0x00000300, 0x00001f0b }, { 0x00000301, 0x00001f0d }, + { 0x00000342, 0x00001f0f }, { 0x00000345, 0x00001f89 }, + { 0x00000345, 0x00001f8a }, { 0x00000345, 0x00001f8b }, + { 0x00000345, 0x00001f8c }, { 0x00000345, 0x00001f8d }, + { 0x00000345, 0x00001f8e }, { 0x00000345, 0x00001f8f }, + { 0x00000300, 0x00001f12 }, { 0x00000301, 0x00001f14 }, + { 0x00000300, 0x00001f13 }, { 0x00000301, 0x00001f15 }, + { 0x00000300, 0x00001f1a }, { 0x00000301, 0x00001f1c }, + { 0x00000300, 0x00001f1b }, { 0x00000301, 0x00001f1d }, + { 0x00000300, 0x00001f22 }, { 0x00000301, 0x00001f24 }, + { 0x00000342, 0x00001f26 }, { 0x00000345, 0x00001f90 }, + { 0x00000300, 0x00001f23 }, { 0x00000301, 0x00001f25 }, + { 0x00000342, 0x00001f27 }, { 0x00000345, 0x00001f91 }, + { 0x00000345, 0x00001f92 }, { 0x00000345, 0x00001f93 }, + { 0x00000345, 0x00001f94 }, { 0x00000345, 0x00001f95 }, + { 0x00000345, 0x00001f96 }, { 0x00000345, 0x00001f97 }, + { 0x00000300, 0x00001f2a }, { 0x00000301, 0x00001f2c }, + { 0x00000342, 0x00001f2e }, { 0x00000345, 0x00001f98 }, + { 0x00000300, 0x00001f2b }, { 0x00000301, 0x00001f2d }, + { 0x00000342, 0x00001f2f }, { 0x00000345, 0x00001f99 }, + { 0x00000345, 0x00001f9a }, { 0x00000345, 0x00001f9b }, + { 0x00000345, 0x00001f9c }, { 0x00000345, 0x00001f9d }, + { 0x00000345, 0x00001f9e }, { 0x00000345, 0x00001f9f }, + { 0x00000300, 0x00001f32 }, { 0x00000301, 0x00001f34 }, + { 0x00000342, 0x00001f36 }, { 0x00000300, 0x00001f33 }, + { 0x00000301, 0x00001f35 }, { 0x00000342, 0x00001f37 }, + { 0x00000300, 0x00001f3a }, { 0x00000301, 0x00001f3c }, + { 0x00000342, 0x00001f3e }, { 0x00000300, 0x00001f3b }, + { 0x00000301, 0x00001f3d }, { 0x00000342, 0x00001f3f }, + { 0x00000300, 0x00001f42 }, { 0x00000301, 0x00001f44 }, + { 0x00000300, 0x00001f43 }, { 0x00000301, 0x00001f45 }, + { 0x00000300, 0x00001f4a }, { 0x00000301, 0x00001f4c }, + { 0x00000300, 0x00001f4b }, { 0x00000301, 0x00001f4d }, + { 0x00000300, 0x00001f52 }, { 0x00000301, 0x00001f54 }, + { 0x00000342, 0x00001f56 }, { 0x00000300, 0x00001f53 }, + { 0x00000301, 0x00001f55 }, { 0x00000342, 0x00001f57 }, + { 0x00000300, 0x00001f5b }, { 0x00000301, 0x00001f5d }, + { 0x00000342, 0x00001f5f }, { 0x00000300, 0x00001f62 }, + { 0x00000301, 0x00001f64 }, { 0x00000342, 0x00001f66 }, + { 0x00000345, 0x00001fa0 }, { 0x00000300, 0x00001f63 }, + { 0x00000301, 0x00001f65 }, { 0x00000342, 0x00001f67 }, + { 0x00000345, 0x00001fa1 }, { 0x00000345, 0x00001fa2 }, + { 0x00000345, 0x00001fa3 }, { 0x00000345, 0x00001fa4 }, + { 0x00000345, 0x00001fa5 }, { 0x00000345, 0x00001fa6 }, + { 0x00000345, 0x00001fa7 }, { 0x00000300, 0x00001f6a }, + { 0x00000301, 0x00001f6c }, { 0x00000342, 0x00001f6e }, + { 0x00000345, 0x00001fa8 }, { 0x00000300, 0x00001f6b }, + { 0x00000301, 0x00001f6d }, { 0x00000342, 0x00001f6f }, + { 0x00000345, 0x00001fa9 }, { 0x00000345, 0x00001faa }, + { 0x00000345, 0x00001fab }, { 0x00000345, 0x00001fac }, + { 0x00000345, 0x00001fad }, { 0x00000345, 0x00001fae }, + { 0x00000345, 0x00001faf }, { 0x00000345, 0x00001fb2 }, + { 0x00000345, 0x00001fc2 }, { 0x00000345, 0x00001ff2 }, + { 0x00000345, 0x00001fb7 }, { 0x00000300, 0x00001fcd }, + { 0x00000301, 0x00001fce }, { 0x00000342, 0x00001fcf }, + { 0x00000345, 0x00001fc7 }, { 0x00000345, 0x00001ff7 }, + { 0x00000300, 0x00001fdd }, { 0x00000301, 0x00001fde }, + { 0x00000342, 0x00001fdf }, { 0x00000338, 0x0000219a }, + { 0x00000338, 0x0000219b }, { 0x00000338, 0x000021ae }, + { 0x00000338, 0x000021cd }, { 0x00000338, 0x000021cf }, + { 0x00000338, 0x000021ce }, { 0x00000338, 0x00002204 }, + { 0x00000338, 0x00002209 }, { 0x00000338, 0x0000220c }, + { 0x00000338, 0x00002224 }, { 0x00000338, 0x00002226 }, + { 0x00000338, 0x00002241 }, { 0x00000338, 0x00002244 }, + { 0x00000338, 0x00002247 }, { 0x00000338, 0x00002249 }, + { 0x00000338, 0x0000226d }, { 0x00000338, 0x00002262 }, + { 0x00000338, 0x00002270 }, { 0x00000338, 0x00002271 }, + { 0x00000338, 0x00002274 }, { 0x00000338, 0x00002275 }, + { 0x00000338, 0x00002278 }, { 0x00000338, 0x00002279 }, + { 0x00000338, 0x00002280 }, { 0x00000338, 0x00002281 }, + { 0x00000338, 0x000022e0 }, { 0x00000338, 0x000022e1 }, + { 0x00000338, 0x00002284 }, { 0x00000338, 0x00002285 }, + { 0x00000338, 0x00002288 }, { 0x00000338, 0x00002289 }, + { 0x00000338, 0x000022e2 }, { 0x00000338, 0x000022e3 }, + { 0x00000338, 0x000022ac }, { 0x00000338, 0x000022ad }, + { 0x00000338, 0x000022ae }, { 0x00000338, 0x000022af }, + { 0x00000338, 0x000022ea }, { 0x00000338, 0x000022eb }, + { 0x00000338, 0x000022ec }, { 0x00000338, 0x000022ed }, + { 0x00003099, 0x00003094 }, { 0x00003099, 0x0000304c }, + { 0x00003099, 0x0000304e }, { 0x00003099, 0x00003050 }, + { 0x00003099, 0x00003052 }, { 0x00003099, 0x00003054 }, + { 0x00003099, 0x00003056 }, { 0x00003099, 0x00003058 }, + { 0x00003099, 0x0000305a }, { 0x00003099, 0x0000305c }, + { 0x00003099, 0x0000305e }, { 0x00003099, 0x00003060 }, + { 0x00003099, 0x00003062 }, { 0x00003099, 0x00003065 }, + { 0x00003099, 0x00003067 }, { 0x00003099, 0x00003069 }, + { 0x00003099, 0x00003070 }, { 0x0000309a, 0x00003071 }, + { 0x00003099, 0x00003073 }, { 0x0000309a, 0x00003074 }, + { 0x00003099, 0x00003076 }, { 0x0000309a, 0x00003077 }, + { 0x00003099, 0x00003079 }, { 0x0000309a, 0x0000307a }, + { 0x00003099, 0x0000307c }, { 0x0000309a, 0x0000307d }, + { 0x00003099, 0x0000309e }, { 0x00003099, 0x000030f4 }, + { 0x00003099, 0x000030ac }, { 0x00003099, 0x000030ae }, + { 0x00003099, 0x000030b0 }, { 0x00003099, 0x000030b2 }, + { 0x00003099, 0x000030b4 }, { 0x00003099, 0x000030b6 }, + { 0x00003099, 0x000030b8 }, { 0x00003099, 0x000030ba }, + { 0x00003099, 0x000030bc }, { 0x00003099, 0x000030be }, + { 0x00003099, 0x000030c0 }, { 0x00003099, 0x000030c2 }, + { 0x00003099, 0x000030c5 }, { 0x00003099, 0x000030c7 }, + { 0x00003099, 0x000030c9 }, { 0x00003099, 0x000030d0 }, + { 0x0000309a, 0x000030d1 }, { 0x00003099, 0x000030d3 }, + { 0x0000309a, 0x000030d4 }, { 0x00003099, 0x000030d6 }, + { 0x0000309a, 0x000030d7 }, { 0x00003099, 0x000030d9 }, + { 0x0000309a, 0x000030da }, { 0x00003099, 0x000030dc }, + { 0x0000309a, 0x000030dd }, { 0x00003099, 0x000030f7 }, + { 0x00003099, 0x000030f8 }, { 0x00003099, 0x000030f9 }, + { 0x00003099, 0x000030fa }, { 0x00003099, 0x000030fe }, +}; + + +/* + * Canonical/Compatibility Decomposition + */ + +#define DECOMP_BITS_0 9 +#define DECOMP_BITS_1 7 +#define DECOMP_BITS_2 5 +#define DECOMP_COMPAT 32768 + +static const unsigned short v310_decompose_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 912, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 1040, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 1168, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 0, 0, 0, 0, 1, 2, 3, + 4, 5, 6, 7, 0, 8, 9, 10, + 11, 12, 0, 0, 0, 13, 14, 15, + 0, 0, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 0, 0, 26, 27, + 0, 0, 0, 0, 28, 0, 0, 0, + 0, 29, 0, 30, 0, 0, 31, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 32, 33, 0, 0, 0, 34, 0, + 0, 35, 36, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 38, 0, 39, 0, + 0, 0, 40, 0, 0, 0, 41, 0, + 0, 0, 42, 0, 0, 0, 43, 0, + 0, 44, 0, 0, 0, 45, 46, 0, + 47, 0, 48, 49, 50, 51, 0, 0, + 0, 52, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 0, 0, + 75, 76, 77, 78, 79, 80, 81, 0, + 82, 83, 84, 85, 86, 87, 0, 88, + 0, 89, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 90, 91, 92, 93, 94, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 95, 0, 0, 96, + 97, 98, 99, 100, 101, 102, 103, 0, + 104, 105, 106, 107, 108, 109, 110, 111, + 0, 112, 113, 114, 115, 0, 0, 0, + 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 0, 0, 0, 0, 0, 0, + 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, + 0, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 181, 182, 0, 183, 184, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, + 233, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned short tbl[32]; +} v310_decompose_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 32769, 0, 0, 0, 0, 0, 0, 0, + 32770, 0, 32772, 0, 0, 0, 0, 32773, + 0, 0, 32775, 32776, 32777, 32779, 0, 0, + 32780, 32782, 32783, 0, 32784, 32787, 32790, 0, + }}, + {{ + 25, 27, 29, 31, 33, 35, 0, 37, + 39, 41, 43, 45, 47, 49, 51, 53, + 0, 55, 57, 59, 61, 63, 65, 0, + 0, 67, 69, 71, 73, 75, 0, 0, + }}, + {{ + 77, 79, 81, 83, 85, 87, 0, 89, + 91, 93, 95, 97, 99, 101, 103, 105, + 0, 107, 109, 111, 113, 115, 117, 0, + 0, 119, 121, 123, 125, 127, 0, 129, + }}, + {{ + 131, 133, 135, 137, 139, 141, 143, 145, + 147, 149, 151, 153, 155, 157, 159, 161, + 0, 0, 163, 165, 167, 169, 171, 173, + 175, 177, 179, 181, 183, 185, 187, 189, + }}, + {{ + 191, 193, 195, 197, 199, 201, 0, 0, + 203, 205, 207, 209, 211, 213, 215, 217, + 219, 0, 32989, 32991, 225, 227, 229, 231, + 0, 233, 235, 237, 239, 241, 243, 33013, + }}, + {{ + 33015, 0, 0, 249, 251, 253, 255, 257, + 259, 33029, 0, 0, 263, 265, 267, 269, + 271, 273, 0, 0, 275, 277, 279, 281, + 283, 285, 287, 289, 291, 293, 295, 297, + }}, + {{ + 299, 301, 303, 305, 307, 309, 0, 0, + 311, 313, 315, 317, 319, 321, 323, 325, + 327, 329, 331, 333, 335, 337, 339, 341, + 343, 345, 347, 349, 351, 353, 355, 33125, + }}, + {{ + 358, 360, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 362, + 364, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 33134, 33136, 33138, 33140, + 33142, 33144, 33146, 33148, 33150, 384, 386, 388, + 390, 392, 394, 396, 398, 400, 402, 404, + 406, 408, 410, 412, 414, 0, 416, 418, + }}, + {{ + 420, 422, 424, 426, 0, 0, 428, 430, + 432, 434, 436, 438, 440, 442, 444, 446, + 448, 33218, 33220, 33222, 456, 458, 0, 0, + 460, 462, 464, 466, 468, 470, 472, 474, + }}, + {{ + 476, 478, 480, 482, 484, 486, 488, 490, + 492, 494, 496, 498, 500, 502, 504, 506, + 508, 510, 512, 514, 516, 518, 520, 522, + 524, 526, 528, 530, 0, 0, 532, 534, + }}, + {{ + 0, 0, 0, 0, 0, 0, 536, 538, + 540, 542, 544, 546, 548, 550, 552, 554, + 556, 558, 560, 562, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33332, 33333, 33334, 33335, 33336, 33337, 33338, 33339, + 33340, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33341, 33343, 33345, 33347, 33349, 33351, 0, 0, + }}, + {{ + 33353, 33354, 33355, 33356, 33357, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 590, 591, 0, 592, 593, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 595, 0, 0, 0, + 0, 0, 33364, 0, 0, 0, 598, 0, + }}, + {{ + 0, 0, 0, 0, 33367, 601, 603, 605, + 606, 608, 610, 0, 612, 0, 614, 616, + 618, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 620, 622, 624, 626, 628, 630, + 632, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 634, 636, 638, 640, 642, 0, + 33412, 33413, 33414, 647, 649, 33419, 33420, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 33421, 33422, 33423, 0, 33424, 33425, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 658, 660, 0, 662, 0, 0, 0, 664, + 0, 0, 0, 0, 666, 668, 670, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 672, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 674, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 676, 678, 0, 680, 0, 0, 0, 682, + 0, 0, 0, 0, 684, 686, 688, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 690, 692, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 694, 696, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 698, 700, 702, 704, 0, 0, 706, 708, + 0, 0, 710, 712, 714, 716, 718, 720, + }}, + {{ + 0, 0, 722, 724, 726, 728, 730, 732, + 0, 0, 734, 736, 738, 740, 742, 744, + 746, 748, 750, 752, 754, 756, 0, 0, + 758, 760, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 33530, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 764, 766, 768, 770, 772, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 33542, 33544, 33546, + 33548, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 782, 0, 784, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 786, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 788, 0, 0, 0, 0, 0, 0, + 0, 790, 0, 0, 792, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 794, 796, 798, 800, 802, 804, 806, 808, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 810, 812, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 814, 816, 0, 818, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 820, 0, 0, 822, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 824, 826, 828, 0, 0, 830, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 832, 0, 0, 834, 836, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 838, 840, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 842, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 844, 846, 848, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 850, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 852, 0, 0, 0, 0, 0, 0, 854, + 856, 0, 858, 860, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 862, 864, 866, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 868, 0, 870, 872, 874, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 33644, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 33646, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33648, 33650, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 33652, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 885, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 887, 0, 0, + 0, 0, 889, 0, 0, 0, 0, 891, + 0, 0, 0, 0, 893, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 895, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 897, 0, 899, 901, 33671, + 905, 33675, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 909, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 911, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 913, 0, 0, + }}, + {{ + 0, 0, 915, 0, 0, 0, 0, 917, + 0, 0, 0, 0, 919, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 921, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 923, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 925, 927, 929, 931, 933, 935, 937, 939, + 941, 943, 945, 947, 949, 951, 953, 955, + 957, 959, 961, 963, 965, 967, 969, 971, + 973, 975, 977, 979, 981, 983, 985, 987, + }}, + {{ + 989, 991, 993, 995, 997, 999, 1001, 1003, + 1005, 1007, 1009, 1011, 1013, 1015, 1017, 1019, + 1021, 1023, 1025, 1027, 1029, 1031, 1033, 1035, + 1037, 1039, 1041, 1043, 1045, 1047, 1049, 1051, + }}, + {{ + 1053, 1055, 1057, 1059, 1061, 1063, 1065, 1067, + 1069, 1071, 1073, 1075, 1077, 1079, 1081, 1083, + 1085, 1087, 1089, 1091, 1093, 1095, 1097, 1099, + 1101, 1103, 1105, 1107, 1109, 1111, 1113, 1115, + }}, + {{ + 1117, 1119, 1121, 1123, 1125, 1127, 1129, 1131, + 1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, + 1149, 1151, 1153, 1155, 1157, 1159, 1161, 1163, + 1165, 1167, 1169, 1171, 1173, 1175, 1177, 1179, + }}, + {{ + 1181, 1183, 1185, 1187, 1189, 1191, 1193, 1195, + 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1211, + 1213, 1215, 1217, 1219, 1221, 1223, 1225, 1227, + 1229, 1231, 34001, 1235, 0, 0, 0, 0, + }}, + {{ + 1237, 1239, 1241, 1243, 1245, 1247, 1249, 1251, + 1253, 1255, 1257, 1259, 1261, 1263, 1265, 1267, + 1269, 1271, 1273, 1275, 1277, 1279, 1281, 1283, + 1285, 1287, 1289, 1291, 1293, 1295, 1297, 1299, + }}, + {{ + 1301, 1303, 1305, 1307, 1309, 1311, 1313, 1315, + 1317, 1319, 1321, 1323, 1325, 1327, 1329, 1331, + 1333, 1335, 1337, 1339, 1341, 1343, 1345, 1347, + 1349, 1351, 1353, 1355, 1357, 1359, 1361, 1363, + }}, + {{ + 1365, 1367, 1369, 1371, 1373, 1375, 1377, 1379, + 1381, 1383, 1385, 1387, 1389, 1391, 1393, 1395, + 1397, 1399, 1401, 1403, 1405, 1407, 1409, 1411, + 1413, 1415, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1417, 1419, 1421, 1423, 1425, 1427, 1429, 1431, + 1433, 1435, 1437, 1439, 1441, 1443, 1445, 1447, + 1449, 1451, 1453, 1455, 1457, 1459, 0, 0, + 1461, 1463, 1465, 1467, 1469, 1471, 0, 0, + }}, + {{ + 1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, + 1489, 1491, 1493, 1495, 1497, 1499, 1501, 1503, + 1505, 1507, 1509, 1511, 1513, 1515, 1517, 1519, + 1521, 1523, 1525, 1527, 1529, 1531, 1533, 1535, + }}, + {{ + 1537, 1539, 1541, 1543, 1545, 1547, 0, 0, + 1549, 1551, 1553, 1555, 1557, 1559, 0, 0, + 1561, 1563, 1565, 1567, 1569, 1571, 1573, 1575, + 0, 1577, 0, 1579, 0, 1581, 0, 1583, + }}, + {{ + 1585, 1587, 1589, 1591, 1593, 1595, 1597, 1599, + 1601, 1603, 1605, 1607, 1609, 1611, 1613, 1615, + 1617, 1619, 1620, 1622, 1623, 1625, 1626, 1628, + 1629, 1631, 1632, 1634, 1635, 1637, 0, 0, + }}, + {{ + 1638, 1640, 1642, 1644, 1646, 1648, 1650, 1652, + 1654, 1656, 1658, 1660, 1662, 1664, 1666, 1668, + 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684, + 1686, 1688, 1690, 1692, 1694, 1696, 1698, 1700, + }}, + {{ + 1702, 1704, 1706, 1708, 1710, 1712, 1714, 1716, + 1718, 1720, 1722, 1724, 1726, 1728, 1730, 1732, + 1734, 1736, 1738, 1740, 1742, 0, 1744, 1746, + 1748, 1750, 1752, 1754, 1755, 34525, 1759, 34528, + }}, + {{ + 34530, 1764, 1766, 1768, 1770, 0, 1772, 1774, + 1776, 1778, 1779, 1781, 1782, 1784, 1786, 1788, + 1790, 1792, 1794, 1796, 0, 0, 1797, 1799, + 1801, 1803, 1805, 1807, 0, 1808, 1810, 1812, + }}, + {{ + 1814, 1816, 1818, 1820, 1821, 1823, 1825, 1827, + 1829, 1831, 1833, 1835, 1836, 1838, 1840, 1841, + 0, 0, 1842, 1844, 1846, 0, 1848, 1850, + 1852, 1854, 1855, 1857, 1858, 1860, 34629, 0, + }}, + {{ + 1863, 1864, 34633, 34634, 34635, 34636, 34637, 34638, + 34639, 34640, 34641, 0, 0, 0, 0, 0, + 0, 34642, 0, 0, 0, 0, 0, 34643, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 34645, 34646, 34648, 0, + 0, 0, 0, 0, 0, 0, 0, 34651, + 0, 0, 0, 34652, 34654, 0, 34657, 34659, + 0, 0, 0, 0, 34662, 0, 34664, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 34666, 34668, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34670, 0, 0, 0, 34671, 34672, 34673, 34674, + 34675, 34676, 34677, 34678, 34679, 34680, 34681, 34682, + }}, + {{ + 34683, 34684, 34685, 34686, 34687, 34688, 34689, 34690, + 34691, 34692, 34693, 34694, 34695, 34696, 34697, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 34698, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 34700, 34703, 34706, 34707, 0, 34709, 34712, 34715, + 0, 34716, 34718, 34719, 34720, 34721, 34722, 34723, + 34724, 34725, 34726, 34727, 0, 34728, 34729, 0, + 0, 34731, 34732, 34733, 34734, 34735, 0, 0, + }}, + {{ + 34736, 34738, 34741, 0, 34743, 0, 1976, 0, + 34745, 0, 1978, 1979, 34748, 34749, 0, 34750, + 34751, 34752, 0, 34753, 34754, 34755, 34756, 34757, + 34758, 34759, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 34760, 34763, 34766, 34769, 34772, + 34775, 34778, 34781, 34784, 34787, 34790, 34793, 34796, + }}, + {{ + 34798, 34799, 34801, 34804, 34806, 34807, 34809, 34812, + 34816, 34818, 34819, 34821, 34824, 34825, 34826, 34827, + 34828, 34829, 34831, 34834, 34836, 34837, 34839, 34842, + 34846, 34848, 34849, 34851, 34854, 34855, 34856, 34857, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2090, 2092, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2094, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2096, 2098, 2100, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 2102, 0, 0, 0, + 0, 2104, 0, 0, 2106, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 2108, 0, 2110, 0, + 0, 0, 0, 0, 34880, 34882, 0, 34885, + 34887, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2122, 0, 0, 2124, 0, 0, 2126, + 0, 2128, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2130, 0, 2132, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2134, 2136, 2138, + 2140, 2142, 0, 0, 2144, 2146, 0, 0, + 2148, 2150, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2152, 2154, 0, 0, 2156, 2158, 0, 0, + 2160, 2162, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2164, 2166, 2168, 2170, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2172, 2174, 2176, 2178, 0, 0, 0, 0, + 0, 0, 2180, 2182, 2184, 2186, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2188, 2189, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 34958, 34959, 34960, 34961, 34962, 34963, 34964, 34965, + 34966, 34967, 34969, 34971, 34973, 34975, 34977, 34979, + 34981, 34983, 34985, 34987, 34989, 34992, 34995, 34998, + 35001, 35004, 35007, 35010, 35013, 35016, 35020, 35024, + }}, + {{ + 35028, 35032, 35036, 35040, 35044, 35048, 35052, 35056, + 35060, 35062, 35064, 35066, 35068, 35070, 35072, 35074, + 35076, 35078, 35081, 35084, 35087, 35090, 35093, 35096, + 35099, 35102, 35105, 35108, 35111, 35114, 35117, 35120, + }}, + {{ + 35123, 35126, 35129, 35132, 35135, 35138, 35141, 35144, + 35147, 35150, 35153, 35156, 35159, 35162, 35165, 35168, + 35171, 35174, 35177, 35180, 35183, 35186, 35189, 35190, + 35191, 35192, 35193, 35194, 35195, 35196, 35197, 35198, + }}, + {{ + 35199, 35200, 35201, 35202, 35203, 35204, 35205, 35206, + 35207, 35208, 35209, 35210, 35211, 35212, 35213, 35214, + 35215, 35216, 35217, 35218, 35219, 35220, 35221, 35222, + 35223, 35224, 35225, 35226, 35227, 35228, 35229, 35230, + }}, + {{ + 35231, 35232, 35233, 35234, 35235, 35236, 35237, 35238, + 35239, 35240, 35241, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 35242, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 35243, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 35244, 35245, 35246, 35247, 35248, 35249, 35250, 35251, + 35252, 35253, 35254, 35255, 35256, 35257, 35258, 35259, + 35260, 35261, 35262, 35263, 35264, 35265, 35266, 35267, + 35268, 35269, 35270, 35271, 35272, 35273, 35274, 35275, + }}, + {{ + 35276, 35277, 35278, 35279, 35280, 35281, 35282, 35283, + 35284, 35285, 35286, 35287, 35288, 35289, 35290, 35291, + 35292, 35293, 35294, 35295, 35296, 35297, 35298, 35299, + 35300, 35301, 35302, 35303, 35304, 35305, 35306, 35307, + }}, + {{ + 35308, 35309, 35310, 35311, 35312, 35313, 35314, 35315, + 35316, 35317, 35318, 35319, 35320, 35321, 35322, 35323, + 35324, 35325, 35326, 35327, 35328, 35329, 35330, 35331, + 35332, 35333, 35334, 35335, 35336, 35337, 35338, 35339, + }}, + {{ + 35340, 35341, 35342, 35343, 35344, 35345, 35346, 35347, + 35348, 35349, 35350, 35351, 35352, 35353, 35354, 35355, + 35356, 35357, 35358, 35359, 35360, 35361, 35362, 35363, + 35364, 35365, 35366, 35367, 35368, 35369, 35370, 35371, + }}, + {{ + 35372, 35373, 35374, 35375, 35376, 35377, 35378, 35379, + 35380, 35381, 35382, 35383, 35384, 35385, 35386, 35387, + 35388, 35389, 35390, 35391, 35392, 35393, 35394, 35395, + 35396, 35397, 35398, 35399, 35400, 35401, 35402, 35403, + }}, + {{ + 35404, 35405, 35406, 35407, 35408, 35409, 35410, 35411, + 35412, 35413, 35414, 35415, 35416, 35417, 35418, 35419, + 35420, 35421, 35422, 35423, 35424, 35425, 35426, 35427, + 35428, 35429, 35430, 35431, 35432, 35433, 35434, 35435, + }}, + {{ + 35436, 35437, 35438, 35439, 35440, 35441, 35442, 35443, + 35444, 35445, 35446, 35447, 35448, 35449, 35450, 35451, + 35452, 35453, 35454, 35455, 35456, 35457, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 35458, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35459, 0, + 35460, 35461, 35462, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2695, 0, 2697, 0, + 2699, 0, 2701, 0, 2703, 0, 2705, 0, + 2707, 0, 2709, 0, 2711, 0, 2713, 0, + }}, + {{ + 2715, 0, 2717, 0, 0, 2719, 0, 2721, + 0, 2723, 0, 0, 0, 0, 0, 0, + 2725, 2727, 0, 2729, 2731, 0, 2733, 2735, + 0, 2737, 2739, 0, 2741, 2743, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2745, 0, 0, 0, + 0, 0, 0, 35515, 35517, 0, 2751, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2753, 0, 2755, 0, + 2757, 0, 2759, 0, 2761, 0, 2763, 0, + 2765, 0, 2767, 0, 2769, 0, 2771, 0, + }}, + {{ + 2773, 0, 2775, 0, 0, 2777, 0, 2779, + 0, 2781, 0, 0, 0, 0, 0, 0, + 2783, 2785, 0, 2787, 2789, 0, 2791, 2793, + 0, 2795, 2797, 0, 2799, 2801, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2803, 0, 0, 2805, + 2807, 2809, 2811, 0, 0, 0, 2813, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 35583, 35584, 35585, 35586, 35587, 35588, 35589, + 35590, 35591, 35592, 35593, 35594, 35595, 35596, 35597, + }}, + {{ + 35598, 35599, 35600, 35601, 35602, 35603, 35604, 35605, + 35606, 35607, 35608, 35609, 35610, 35611, 35612, 35613, + 35614, 35615, 35616, 35617, 35618, 35619, 35620, 35621, + 35622, 35623, 35624, 35625, 35626, 35627, 35628, 35629, + }}, + {{ + 35630, 35631, 35632, 35633, 35634, 35635, 35636, 35637, + 35638, 35639, 35640, 35641, 35642, 35643, 35644, 35645, + 35646, 35647, 35648, 35649, 35650, 35651, 35652, 35653, + 35654, 35655, 35656, 35657, 35658, 35659, 35660, 35661, + }}, + {{ + 35662, 35663, 35664, 35665, 35666, 35667, 35668, 35669, + 35670, 35671, 35672, 35673, 35674, 35675, 35676, 0, + 0, 0, 35677, 35678, 35679, 35680, 35681, 35682, + 35683, 35684, 35685, 35686, 35687, 35688, 35689, 35690, + }}, + {{ + 35691, 35694, 35697, 35700, 35703, 35706, 35709, 35712, + 35715, 35718, 35721, 35724, 35727, 35730, 35733, 35737, + 35741, 35745, 35749, 35753, 35757, 35761, 35765, 35769, + 35773, 35777, 35781, 35785, 35789, 0, 0, 0, + }}, + {{ + 35793, 35796, 35799, 35802, 35805, 35808, 35811, 35814, + 35817, 35820, 35823, 35826, 35829, 35832, 35835, 35838, + 35841, 35844, 35847, 35850, 35853, 35856, 35859, 35862, + 35865, 35868, 35871, 35874, 35877, 35880, 35883, 35886, + }}, + {{ + 35889, 35892, 35895, 35898, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 35901, 35902, 35903, 35904, 35905, 35906, 35907, 35908, + 35909, 35910, 35911, 35912, 35913, 35914, 35915, 35917, + 35919, 35921, 35923, 35925, 35927, 35929, 35931, 35933, + 35935, 35937, 35939, 35941, 0, 0, 0, 0, + }}, + {{ + 35943, 35944, 35945, 35946, 35947, 35948, 35949, 35950, + 35951, 35952, 35953, 35954, 35955, 35956, 35957, 35958, + 35959, 35960, 35961, 35962, 35963, 35964, 35965, 35966, + 35967, 35968, 35969, 35970, 35971, 35972, 35973, 35974, + }}, + {{ + 35975, 35976, 35977, 35978, 35979, 35980, 35981, 35982, + 35983, 35984, 35985, 35986, 35987, 35988, 35989, 35990, + 35991, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 35992, 35994, 35996, 35998, 36000, 36002, 36004, 36006, + 36008, 36010, 36013, 36016, 0, 0, 0, 0, + 36019, 36020, 36021, 36022, 36023, 36024, 36025, 36026, + 36027, 36028, 36029, 36030, 36031, 36032, 36033, 36034, + }}, + {{ + 36035, 36036, 36037, 36038, 36039, 36040, 36041, 36042, + 36043, 36044, 36045, 36046, 36047, 36048, 36049, 36050, + 36051, 36052, 36053, 36054, 36055, 36056, 36057, 36058, + 36059, 36060, 36061, 36062, 36063, 36064, 36065, 0, + }}, + {{ + 36066, 36070, 36074, 36078, 36081, 36085, 36088, 36091, + 36096, 36100, 36103, 36106, 36109, 36113, 36117, 36120, + 36123, 36125, 36128, 36132, 36136, 36138, 36143, 36149, + 36154, 36157, 36162, 36167, 36171, 36174, 36177, 36180, + }}, + {{ + 36184, 36189, 36193, 36196, 36199, 36202, 36204, 36206, + 36208, 36210, 36213, 36216, 36221, 36224, 36228, 36233, + 36236, 36238, 36240, 36245, 36249, 36254, 36257, 36262, + 36264, 36267, 36270, 36273, 36276, 36279, 36283, 36286, + }}, + {{ + 36288, 36291, 36294, 36297, 36301, 36304, 36307, 36310, + 36315, 36319, 36321, 36326, 36328, 36332, 36336, 36339, + 36342, 36345, 36349, 36351, 36354, 36358, 36360, 36365, + 36368, 36370, 36372, 36374, 36376, 36378, 36380, 36382, + }}, + {{ + 36384, 36386, 36388, 36391, 36394, 36397, 36400, 36403, + 36406, 36409, 36412, 36415, 36418, 36421, 36424, 36427, + 36430, 36433, 36436, 36438, 36440, 36443, 36445, 0, + 0, 0, 0, 36447, 36449, 36451, 36453, 36455, + }}, + {{ + 36459, 36461, 36463, 36465, 36467, 36469, 36471, 36473, + 36475, 36478, 36482, 36484, 36486, 36488, 36490, 36492, + 36494, 36496, 36499, 36502, 36505, 36508, 36510, 36512, + 36514, 36516, 36518, 36520, 36522, 36524, 36526, 36528, + }}, + {{ + 36531, 36534, 36536, 36539, 36542, 36545, 36547, 36550, + 36553, 36557, 36559, 36562, 36565, 36568, 36571, 36576, + 36582, 36584, 36586, 36588, 36590, 36592, 36594, 36596, + 36598, 36600, 36602, 36604, 36606, 36608, 36610, 36612, + }}, + {{ + 36614, 36616, 36618, 36622, 36624, 36626, 36628, 36632, + 36635, 36637, 36639, 36641, 36643, 36645, 36647, 36649, + 36651, 36653, 36655, 36658, 36660, 36662, 36665, 36668, + 36670, 36674, 36677, 36679, 36681, 36683, 0, 0, + }}, + {{ + 36685, 36687, 36689, 36691, 36693, 36695, 36697, 36699, + 36701, 36703, 36706, 36709, 36712, 36715, 36718, 36721, + 36724, 36727, 36730, 36733, 36736, 36739, 36742, 36745, + 36748, 36751, 36754, 36757, 36760, 36763, 36766, 0, + }}, + {{ + 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008, + 4009, 4010, 4011, 4012, 4013, 4014, 4015, 4016, + 4017, 4018, 4019, 4020, 4021, 4022, 4023, 4024, + 4025, 4026, 4027, 4028, 4029, 4030, 4031, 4032, + }}, + {{ + 4033, 4034, 4035, 4036, 4037, 4038, 4039, 4040, + 4041, 4042, 4043, 4044, 4045, 4046, 4047, 4048, + 4049, 4050, 4051, 4052, 4053, 4054, 4055, 4056, + 4057, 4058, 4059, 4060, 4061, 4062, 4063, 4064, + }}, + {{ + 4065, 4066, 4067, 4068, 4069, 4070, 4071, 4072, + 4073, 4074, 4075, 4076, 4077, 4078, 4079, 4080, + 4081, 4082, 4083, 4084, 4085, 4086, 4087, 4088, + 4089, 4090, 4091, 4092, 4093, 4094, 4095, 4096, + }}, + {{ + 4097, 4098, 4099, 4100, 4101, 4102, 4103, 4104, + 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112, + 4113, 4114, 4115, 4116, 4117, 4118, 4119, 4120, + 4121, 4122, 4123, 4124, 4125, 4126, 4127, 4128, + }}, + {{ + 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, + 4137, 4138, 4139, 4140, 4141, 4142, 4143, 4144, + 4145, 4146, 4147, 4148, 4149, 4150, 4151, 4152, + 4153, 4154, 4155, 4156, 4157, 4158, 4159, 4160, + }}, + {{ + 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, + 4169, 4170, 4171, 4172, 4173, 4174, 4175, 4176, + 4177, 4178, 4179, 4180, 4181, 4182, 4183, 4184, + 4185, 4186, 4187, 4188, 4189, 4190, 4191, 4192, + }}, + {{ + 4193, 4194, 4195, 4196, 4197, 4198, 4199, 4200, + 4201, 4202, 4203, 4204, 4205, 4206, 4207, 4208, + 4209, 4210, 4211, 4212, 4213, 4214, 4215, 4216, + 4217, 4218, 4219, 4220, 4221, 4222, 4223, 4224, + }}, + {{ + 4225, 4226, 4227, 4228, 4229, 4230, 4231, 4232, + 4233, 4234, 4235, 4236, 4237, 4238, 4239, 4240, + 4241, 4242, 4243, 4244, 4245, 4246, 4247, 4248, + 4249, 4250, 4251, 4252, 4253, 4254, 4255, 4256, + }}, + {{ + 4257, 4258, 4259, 4260, 4261, 4262, 4263, 4264, + 4265, 4266, 4267, 4268, 4269, 4270, 0, 0, + 4271, 0, 4272, 0, 0, 4273, 4274, 4275, + 4276, 4277, 4278, 4279, 4280, 4281, 4282, 0, + }}, + {{ + 4283, 0, 4284, 0, 0, 4285, 4286, 0, + 0, 0, 4287, 4288, 4289, 4290, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 37059, 37061, 37063, 37065, 37068, 37071, 37073, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37075, 37077, 37079, 37081, 37083, + 0, 0, 0, 0, 0, 4317, 0, 4319, + }}, + {{ + 37089, 37090, 37091, 37092, 37093, 37094, 37095, 37096, + 37097, 37098, 4331, 4333, 4335, 4337, 4339, 4341, + 4343, 4345, 4347, 4349, 4351, 4353, 4355, 0, + 4357, 4359, 4361, 4363, 4365, 0, 4367, 0, + }}, + {{ + 4369, 4371, 0, 4373, 4375, 0, 4377, 4379, + 4381, 4383, 4385, 4387, 4389, 4391, 4393, 37163, + 37165, 37166, 37167, 37168, 37169, 37170, 37171, 37172, + 37173, 37174, 37175, 37176, 37177, 37178, 37179, 37180, + }}, + {{ + 37181, 37182, 37183, 37184, 37185, 37186, 37187, 37188, + 37189, 37190, 37191, 37192, 37193, 37194, 37195, 37196, + 37197, 37198, 37199, 37200, 37201, 37202, 37203, 37204, + 37205, 37206, 37207, 37208, 37209, 37210, 37211, 37212, + }}, + {{ + 37213, 37214, 37215, 37216, 37217, 37218, 37219, 37220, + 37221, 37222, 37223, 37224, 37225, 37226, 37227, 37228, + 37229, 37230, 37231, 37232, 37233, 37234, 37235, 37236, + 37237, 37238, 37239, 37240, 37241, 37242, 37243, 37244, + }}, + {{ + 37245, 37246, 37247, 37248, 37249, 37250, 37251, 37252, + 37253, 37254, 37255, 37256, 37257, 37258, 37259, 37260, + 37261, 37262, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37263, 37264, 37265, 37266, 37267, + 37268, 37269, 37270, 37271, 37272, 37273, 37274, 37275, + }}, + {{ + 37276, 37277, 37278, 37279, 37280, 37281, 37282, 37283, + 37284, 37285, 37286, 37288, 37290, 37292, 37294, 37296, + 37298, 37300, 37302, 37304, 37306, 37308, 37310, 37312, + 37314, 37316, 37318, 37320, 37322, 37323, 37324, 37325, + }}, + {{ + 37326, 37328, 37330, 37332, 37334, 37336, 37338, 37340, + 37342, 37344, 37346, 37348, 37350, 37352, 37354, 37356, + 37358, 37360, 37362, 37364, 37366, 37368, 37370, 37372, + 37374, 37376, 37378, 37380, 37382, 37384, 37386, 37388, + }}, + {{ + 37390, 37392, 37394, 37396, 37398, 37400, 37402, 37404, + 37406, 37408, 37410, 37412, 37414, 37416, 37418, 37420, + 37422, 37424, 37426, 37428, 37430, 37432, 37434, 37436, + 37438, 37440, 37442, 37444, 37446, 37448, 37450, 37452, + }}, + {{ + 37454, 37456, 37458, 37460, 37462, 37464, 37466, 37468, + 37470, 37472, 37474, 37476, 37478, 37480, 37482, 37484, + 37486, 37488, 37490, 37492, 37494, 37496, 37498, 37500, + 37502, 37504, 37506, 37508, 37510, 37512, 37514, 37517, + }}, + {{ + 37520, 37523, 37526, 37529, 37532, 37534, 37536, 37538, + 37540, 37542, 37544, 37546, 37548, 37550, 37552, 37554, + 37556, 37558, 37560, 37562, 37564, 37566, 37568, 37570, + 37572, 37574, 37576, 37578, 37580, 37582, 37584, 37586, + }}, + {{ + 37588, 37590, 37592, 37594, 37596, 37598, 37600, 37602, + 37604, 37606, 37608, 37610, 37612, 37614, 37616, 37618, + 37620, 37622, 37624, 37626, 37628, 37630, 37632, 37634, + 37636, 37638, 37640, 37642, 37644, 37646, 37648, 37650, + }}, + {{ + 37652, 37654, 37656, 37658, 37660, 37662, 37664, 37666, + 37668, 37670, 37672, 37674, 37676, 37678, 37680, 37682, + 37684, 37686, 37688, 37690, 37692, 37694, 37696, 37698, + 37700, 37702, 37704, 37706, 37708, 37710, 37712, 37714, + }}, + {{ + 37716, 37718, 37720, 37722, 37724, 37726, 37728, 37730, + 37732, 37734, 37736, 37738, 37740, 37742, 37744, 37746, + 37748, 37750, 37752, 37754, 37756, 37758, 37760, 37762, + 37764, 37766, 37768, 37770, 37772, 37774, 37776, 37778, + }}, + {{ + 37780, 37782, 37784, 37786, 37788, 37790, 37792, 37794, + 37796, 37798, 37800, 37802, 37804, 37806, 37808, 37810, + 37812, 37814, 37816, 37819, 37822, 37825, 37827, 37829, + 37831, 37833, 37835, 37837, 37839, 37841, 37843, 37845, + }}, + {{ + 37847, 37849, 37851, 37853, 37855, 37857, 37859, 37861, + 37863, 37865, 37867, 37869, 37871, 37873, 37875, 37877, + 37879, 37881, 37883, 37885, 37887, 37889, 37891, 37893, + 37895, 37897, 37899, 37901, 37903, 37905, 37907, 37909, + }}, + {{ + 37911, 37913, 37915, 37917, 37919, 37921, 37923, 37925, + 37927, 37929, 37931, 37933, 37935, 37937, 37939, 37941, + 37943, 37945, 37947, 37949, 37951, 37953, 37955, 37957, + 37959, 37961, 37963, 37965, 37967, 37969, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 37971, 37974, 37977, 37980, 37983, 37986, 37989, 37992, + 37995, 37998, 38001, 38004, 38007, 38010, 38013, 38016, + }}, + {{ + 38019, 38022, 38025, 38028, 38031, 38034, 38037, 38040, + 38043, 38046, 38049, 38052, 38055, 38058, 38061, 38064, + 38067, 38070, 38073, 38076, 38079, 38082, 38085, 38088, + 38091, 38094, 38097, 38100, 38103, 38106, 38109, 38112, + }}, + {{ + 38115, 38118, 38121, 38124, 38127, 38130, 38133, 38136, + 38139, 38142, 38145, 38148, 38151, 38154, 38157, 38160, + 0, 0, 38163, 38166, 38169, 38172, 38175, 38178, + 38181, 38184, 38187, 38190, 38193, 38196, 38199, 38202, + }}, + {{ + 38205, 38208, 38211, 38214, 38217, 38220, 38223, 38226, + 38229, 38232, 38235, 38238, 38241, 38244, 38247, 38250, + 38253, 38256, 38259, 38262, 38265, 38268, 38271, 38274, + 38277, 38280, 38283, 38286, 38289, 38292, 38295, 38298, + }}, + {{ + 38301, 38304, 38307, 38310, 38313, 38316, 38319, 38322, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38325, 38328, 38331, 38335, 38339, 38343, 38347, 38351, + 38355, 38359, 38362, 38380, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 38388, 38389, 38390, 38391, 38392, 38393, 38394, 38395, + 38396, 38397, 38398, 38399, 38400, 38401, 38402, 38403, + }}, + {{ + 38404, 38405, 38406, 38407, 38408, 0, 0, 0, + 0, 38409, 38410, 38411, 38412, 38413, 38414, 38415, + 38416, 38417, 38418, 0, 38419, 38420, 38421, 38422, + 38423, 38424, 38425, 38426, 38427, 38428, 38429, 38430, + }}, + {{ + 38431, 38432, 38433, 38434, 38435, 38436, 38437, 0, + 38438, 38439, 38440, 38441, 0, 0, 0, 0, + 38442, 38444, 38446, 0, 38448, 0, 38450, 38452, + 38454, 38456, 38458, 38460, 38462, 38464, 38466, 38468, + }}, + {{ + 38470, 38471, 38472, 38473, 38474, 38475, 38476, 38477, + 38478, 38479, 38480, 38481, 38482, 38483, 38484, 38485, + 38486, 38487, 38488, 38489, 38490, 38491, 38492, 38493, + 38494, 38495, 38496, 38497, 38498, 38499, 38500, 38501, + }}, + {{ + 38502, 38503, 38504, 38505, 38506, 38507, 38508, 38509, + 38510, 38511, 38512, 38513, 38514, 38515, 38516, 38517, + 38518, 38519, 38520, 38521, 38522, 38523, 38524, 38525, + 38526, 38527, 38528, 38529, 38530, 38531, 38532, 38533, + }}, + {{ + 38534, 38535, 38536, 38537, 38538, 38539, 38540, 38541, + 38542, 38543, 38544, 38545, 38546, 38547, 38548, 38549, + 38550, 38551, 38552, 38553, 38554, 38555, 38556, 38557, + 38558, 38559, 38560, 38561, 38562, 38563, 38564, 38565, + }}, + {{ + 38566, 38567, 38568, 38569, 38570, 38571, 38572, 38573, + 38574, 38575, 38576, 38577, 38578, 38579, 38580, 38581, + 38582, 38583, 38584, 38585, 38586, 38587, 38589, 38591, + 38593, 38595, 38597, 38599, 38601, 0, 0, 0, + }}, + {{ + 0, 38603, 38604, 38605, 38606, 38607, 38608, 38609, + 38610, 38611, 38612, 38613, 38614, 38615, 38616, 38617, + 38618, 38619, 38620, 38621, 38622, 38623, 38624, 38625, + 38626, 38627, 38628, 38629, 38630, 38631, 38632, 38633, + }}, + {{ + 38634, 38635, 38636, 38637, 38638, 38639, 38640, 38641, + 38642, 38643, 38644, 38645, 38646, 38647, 38648, 38649, + 38650, 38651, 38652, 38653, 38654, 38655, 38656, 38657, + 38658, 38659, 38660, 38661, 38662, 38663, 38664, 38665, + }}, + {{ + 38666, 38667, 38668, 38669, 38670, 38671, 38672, 38673, + 38674, 38675, 38676, 38677, 38678, 38679, 38680, 38681, + 38682, 38683, 38684, 38685, 38686, 38687, 38688, 38689, + 38690, 38691, 38692, 38693, 38694, 38695, 38696, 0, + }}, + {{ + 0, 38697, 38698, 38699, 38700, 38701, 38702, 38703, + 38704, 38705, 38706, 38707, 38708, 38709, 38710, 38711, + 38712, 38713, 38714, 38715, 38716, 38717, 38718, 38719, + 38720, 38721, 38722, 38723, 38724, 38725, 38726, 38727, + }}, + {{ + 38728, 38729, 38730, 38731, 38732, 38733, 38734, 38735, + 38736, 38737, 38738, 38739, 38740, 38741, 38742, 38743, + 38744, 38745, 38746, 38747, 38748, 38749, 38750, 38751, + 38752, 38753, 38754, 38755, 38756, 38757, 38758, 38759, + }}, + {{ + 38760, 38761, 38762, 38763, 38764, 38765, 38766, 38767, + 38768, 38769, 38770, 38771, 38772, 38773, 38774, 38775, + 38776, 38777, 38778, 38779, 38780, 38781, 38782, 38783, + 38784, 38785, 38786, 38787, 38788, 38789, 38790, 0, + }}, + {{ + 0, 0, 38791, 38792, 38793, 38794, 38795, 38796, + 0, 0, 38797, 38798, 38799, 38800, 38801, 38802, + 0, 0, 38803, 38804, 38805, 38806, 38807, 38808, + 0, 0, 38809, 38810, 38811, 0, 0, 0, + }}, + {{ + 38812, 38813, 38814, 38815, 38816, 38817, 38818, 0, + 38819, 38820, 38821, 38822, 38823, 38824, 38825, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6058, 6060, + }}, + {{ + 6062, 6064, 6066, 6068, 6070, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 6072, 6074, 6076, 6078, 6080, + }}, + {{ + 6082, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 38852, 38853, 38854, 38855, 38856, 38857, 38858, 38859, + 38860, 38861, 38862, 38863, 38864, 38865, 38866, 38867, + 38868, 38869, 38870, 38871, 38872, 38873, 38874, 38875, + 38876, 38877, 38878, 38879, 38880, 38881, 38882, 38883, + }}, + {{ + 38884, 38885, 38886, 38887, 38888, 38889, 38890, 38891, + 38892, 38893, 38894, 38895, 38896, 38897, 38898, 38899, + 38900, 38901, 38902, 38903, 38904, 38905, 38906, 38907, + 38908, 38909, 38910, 38911, 38912, 38913, 38914, 38915, + }}, + {{ + 38916, 38917, 38918, 38919, 38920, 38921, 38922, 38923, + 38924, 38925, 38926, 38927, 38928, 38929, 38930, 38931, + 38932, 38933, 38934, 38935, 38936, 0, 38937, 38938, + 38939, 38940, 38941, 38942, 38943, 38944, 38945, 38946, + }}, + {{ + 38947, 38948, 38949, 38950, 38951, 38952, 38953, 38954, + 38955, 38956, 38957, 38958, 38959, 38960, 38961, 38962, + 38963, 38964, 38965, 38966, 38967, 38968, 38969, 38970, + 38971, 38972, 38973, 38974, 38975, 38976, 38977, 38978, + }}, + {{ + 38979, 38980, 38981, 38982, 38983, 38984, 38985, 38986, + 38987, 38988, 38989, 38990, 38991, 38992, 38993, 38994, + 38995, 38996, 38997, 38998, 38999, 39000, 39001, 39002, + 39003, 39004, 39005, 39006, 39007, 0, 39008, 39009, + }}, + {{ + 0, 0, 39010, 0, 0, 39011, 39012, 0, + 0, 39013, 39014, 39015, 39016, 0, 39017, 39018, + 39019, 39020, 39021, 39022, 39023, 39024, 39025, 39026, + 39027, 39028, 0, 39029, 0, 39030, 39031, 39032, + }}, + {{ + 39033, 0, 39034, 39035, 0, 39036, 39037, 39038, + 39039, 39040, 39041, 39042, 39043, 39044, 39045, 39046, + 39047, 39048, 39049, 39050, 39051, 39052, 39053, 39054, + 39055, 39056, 39057, 39058, 39059, 39060, 39061, 39062, + }}, + {{ + 39063, 39064, 39065, 39066, 39067, 39068, 39069, 39070, + 39071, 39072, 39073, 39074, 39075, 39076, 39077, 39078, + 39079, 39080, 39081, 39082, 39083, 39084, 39085, 39086, + 39087, 39088, 39089, 39090, 39091, 39092, 39093, 39094, + }}, + {{ + 39095, 39096, 39097, 39098, 39099, 39100, 0, 39101, + 39102, 39103, 39104, 0, 0, 39105, 39106, 39107, + 39108, 39109, 39110, 39111, 39112, 0, 39113, 39114, + 39115, 39116, 39117, 39118, 39119, 0, 39120, 39121, + }}, + {{ + 39122, 39123, 39124, 39125, 39126, 39127, 39128, 39129, + 39130, 39131, 39132, 39133, 39134, 39135, 39136, 39137, + 39138, 39139, 39140, 39141, 39142, 39143, 39144, 39145, + 39146, 39147, 0, 39148, 39149, 39150, 39151, 0, + }}, + {{ + 39152, 39153, 39154, 39155, 39156, 0, 39157, 0, + 0, 0, 39158, 39159, 39160, 39161, 39162, 39163, + 39164, 0, 39165, 39166, 39167, 39168, 39169, 39170, + 39171, 39172, 39173, 39174, 39175, 39176, 39177, 39178, + }}, + {{ + 39179, 39180, 39181, 39182, 39183, 39184, 39185, 39186, + 39187, 39188, 39189, 39190, 39191, 39192, 39193, 39194, + 39195, 39196, 39197, 39198, 39199, 39200, 39201, 39202, + 39203, 39204, 39205, 39206, 39207, 39208, 39209, 39210, + }}, + {{ + 39211, 39212, 39213, 39214, 39215, 39216, 39217, 39218, + 39219, 39220, 39221, 39222, 39223, 39224, 39225, 39226, + 39227, 39228, 39229, 39230, 39231, 39232, 39233, 39234, + 39235, 39236, 39237, 39238, 39239, 39240, 39241, 39242, + }}, + {{ + 39243, 39244, 39245, 39246, 39247, 39248, 39249, 39250, + 39251, 39252, 39253, 39254, 39255, 39256, 39257, 39258, + 39259, 39260, 39261, 39262, 39263, 39264, 39265, 39266, + 39267, 39268, 39269, 39270, 39271, 39272, 39273, 39274, + }}, + {{ + 39275, 39276, 39277, 39278, 39279, 39280, 39281, 39282, + 39283, 39284, 39285, 39286, 39287, 39288, 39289, 39290, + 39291, 39292, 39293, 39294, 39295, 39296, 39297, 39298, + 39299, 39300, 39301, 39302, 39303, 39304, 39305, 39306, + }}, + {{ + 39307, 39308, 39309, 39310, 39311, 39312, 39313, 39314, + 39315, 39316, 39317, 39318, 39319, 39320, 39321, 39322, + 39323, 39324, 39325, 39326, 39327, 39328, 39329, 39330, + 39331, 39332, 39333, 39334, 39335, 39336, 39337, 39338, + }}, + {{ + 39339, 39340, 39341, 39342, 39343, 39344, 39345, 39346, + 39347, 39348, 39349, 39350, 39351, 39352, 39353, 39354, + 39355, 39356, 39357, 39358, 39359, 39360, 39361, 39362, + 39363, 39364, 39365, 39366, 39367, 39368, 39369, 39370, + }}, + {{ + 39371, 39372, 39373, 39374, 39375, 39376, 39377, 39378, + 39379, 39380, 39381, 39382, 39383, 39384, 39385, 39386, + 39387, 39388, 39389, 39390, 39391, 39392, 39393, 39394, + 39395, 39396, 39397, 39398, 39399, 39400, 39401, 39402, + }}, + {{ + 39403, 39404, 39405, 39406, 39407, 39408, 39409, 39410, + 39411, 39412, 39413, 39414, 39415, 39416, 39417, 39418, + 39419, 39420, 39421, 39422, 39423, 39424, 39425, 39426, + 39427, 39428, 39429, 39430, 39431, 39432, 39433, 39434, + }}, + {{ + 39435, 39436, 39437, 39438, 39439, 39440, 39441, 39442, + 39443, 39444, 39445, 39446, 39447, 39448, 39449, 39450, + 39451, 39452, 39453, 39454, 39455, 39456, 39457, 39458, + 39459, 39460, 39461, 39462, 39463, 39464, 39465, 39466, + }}, + {{ + 39467, 39468, 39469, 39470, 39471, 39472, 39473, 39474, + 39475, 39476, 39477, 39478, 39479, 39480, 39481, 39482, + 39483, 39484, 39485, 39486, 39487, 39488, 39489, 39490, + 39491, 39492, 39493, 39494, 39495, 39496, 39497, 39498, + }}, + {{ + 39499, 39500, 39501, 39502, 0, 0, 0, 0, + 39503, 39504, 39505, 39506, 39507, 39508, 39509, 39510, + 39511, 39512, 39513, 39514, 39515, 39516, 39517, 39518, + 39519, 39520, 39521, 39522, 39523, 39524, 39525, 39526, + }}, + {{ + 39527, 39528, 39529, 39530, 39531, 39532, 39533, 39534, + 39535, 39536, 39537, 39538, 39539, 39540, 39541, 39542, + 39543, 39544, 39545, 39546, 39547, 39548, 39549, 39550, + 39551, 39552, 39553, 39554, 39555, 39556, 39557, 39558, + }}, + {{ + 39559, 39560, 39561, 39562, 39563, 39564, 39565, 39566, + 39567, 39568, 39569, 39570, 39571, 39572, 39573, 39574, + 39575, 39576, 39577, 39578, 39579, 39580, 39581, 39582, + 39583, 39584, 39585, 39586, 39587, 39588, 39589, 39590, + }}, + {{ + 39591, 39592, 39593, 39594, 39595, 39596, 39597, 39598, + 39599, 39600, 39601, 39602, 39603, 39604, 39605, 39606, + 39607, 39608, 39609, 39610, 39611, 39612, 39613, 39614, + 39615, 39616, 39617, 39618, 39619, 39620, 39621, 39622, + }}, + {{ + 39623, 39624, 39625, 39626, 39627, 39628, 39629, 39630, + 39631, 39632, 39633, 39634, 39635, 39636, 39637, 39638, + 39639, 39640, 39641, 39642, 39643, 39644, 39645, 39646, + 39647, 39648, 39649, 39650, 39651, 39652, 39653, 39654, + }}, + {{ + 39655, 39656, 39657, 39658, 39659, 39660, 39661, 39662, + 39663, 39664, 39665, 39666, 39667, 39668, 39669, 39670, + 39671, 39672, 39673, 39674, 39675, 39676, 39677, 39678, + 39679, 39680, 39681, 39682, 39683, 39684, 39685, 39686, + }}, + {{ + 39687, 39688, 39689, 39690, 39691, 39692, 39693, 39694, + 39695, 39696, 39697, 39698, 39699, 39700, 39701, 39702, + 39703, 39704, 39705, 39706, 39707, 39708, 39709, 39710, + 39711, 39712, 39713, 39714, 39715, 39716, 39717, 39718, + }}, + {{ + 39719, 39720, 39721, 39722, 39723, 39724, 39725, 39726, + 39727, 39728, 39729, 39730, 39731, 39732, 39733, 39734, + 39735, 39736, 39737, 39738, 39739, 39740, 39741, 39742, + 39743, 39744, 39745, 39746, 39747, 39748, 39749, 39750, + }}, + {{ + 39751, 39752, 39753, 39754, 39755, 39756, 39757, 39758, + 39759, 39760, 39761, 39762, 39763, 39764, 39765, 39766, + 39767, 39768, 39769, 39770, 39771, 39772, 39773, 39774, + 39775, 39776, 39777, 39778, 39779, 39780, 39781, 39782, + }}, + {{ + 39783, 39784, 39785, 39786, 39787, 39788, 39789, 39790, + 39791, 39792, 0, 0, 0, 0, 39793, 39794, + 39795, 39796, 39797, 39798, 39799, 39800, 39801, 39802, + 39803, 39804, 39805, 39806, 39807, 39808, 39809, 39810, + }}, + {{ + 39811, 39812, 39813, 39814, 39815, 39816, 39817, 39818, + 39819, 39820, 39821, 39822, 39823, 39824, 39825, 39826, + 39827, 39828, 39829, 39830, 39831, 39832, 39833, 39834, + 39835, 39836, 39837, 39838, 39839, 39840, 39841, 39842, + }}, + {{ + 7075, 7076, 7077, 7078, 7079, 7080, 7081, 7082, + 7083, 7084, 7085, 7086, 7087, 7088, 7089, 7090, + 7091, 7092, 7093, 7094, 7095, 7096, 7097, 7098, + 7099, 7100, 7101, 7102, 7103, 7104, 7105, 7106, + }}, + {{ + 7107, 7108, 7109, 7110, 7111, 7112, 7113, 7114, + 7115, 7116, 7117, 7118, 7119, 7120, 7121, 7122, + 7123, 7124, 7125, 7126, 7127, 7128, 7129, 7130, + 7131, 7132, 7133, 7134, 7135, 7136, 7137, 7138, + }}, + {{ + 7139, 7140, 7141, 7142, 7143, 7144, 7145, 7146, + 7147, 7148, 7149, 7150, 7151, 7152, 7153, 7154, + 7155, 7156, 7157, 7158, 7159, 7160, 7161, 7162, + 7163, 7164, 7165, 7166, 7167, 7168, 7169, 7170, + }}, + {{ + 7171, 7172, 7173, 7174, 7175, 7176, 7177, 7178, + 7179, 7180, 7181, 7182, 7183, 7184, 7185, 7186, + 7187, 7188, 7189, 7190, 7191, 7192, 7193, 7194, + 7195, 7196, 7197, 7198, 7199, 7200, 7201, 7202, + }}, + {{ + 7203, 7204, 7205, 7206, 7207, 7208, 7209, 7210, + 7211, 7212, 7213, 7214, 7215, 7216, 7217, 7218, + 7219, 7220, 7221, 7222, 7223, 7224, 7225, 7226, + 7227, 7228, 7229, 7230, 7231, 7232, 7233, 7234, + }}, + {{ + 7235, 7236, 7237, 7238, 7239, 7240, 7241, 7242, + 7243, 7244, 7245, 7246, 7247, 7248, 7249, 7250, + 7251, 7252, 7253, 7254, 7255, 7256, 7257, 7258, + 7259, 7260, 7261, 7262, 7263, 7264, 7265, 7266, + }}, + {{ + 7267, 7268, 7269, 7270, 7271, 7272, 7273, 7274, + 7275, 7276, 7277, 7278, 7279, 7280, 7281, 7282, + 7283, 7284, 7285, 7286, 7287, 7288, 7289, 7290, + 7291, 7292, 7293, 7294, 7295, 7296, 7297, 7298, + }}, + {{ + 7299, 7300, 7301, 7302, 7303, 7304, 7305, 7306, + 7307, 7308, 7309, 7310, 7311, 7312, 7313, 7314, + 7315, 7316, 7317, 7318, 7319, 7320, 7321, 7322, + 7323, 7324, 7325, 7326, 7327, 7328, 7329, 7330, + }}, + {{ + 7331, 7332, 7333, 7334, 7335, 7336, 7337, 7338, + 7339, 7340, 7341, 7342, 7343, 7344, 7345, 7346, + 7347, 7348, 7349, 7350, 7351, 7352, 7353, 7354, + 7355, 7356, 7357, 7358, 7359, 7360, 7361, 7362, + }}, + {{ + 7363, 7364, 7365, 7366, 7367, 7368, 7369, 7370, + 7371, 7372, 7373, 7374, 7375, 7376, 7377, 7378, + 7379, 7380, 7381, 7382, 7383, 7384, 7385, 7386, + 7387, 7388, 7389, 7390, 7391, 7392, 7393, 7394, + }}, + {{ + 7395, 7396, 7397, 7398, 7399, 7400, 7401, 7402, + 7403, 7404, 7405, 7406, 7407, 7408, 7409, 7410, + 7411, 7412, 7413, 7414, 7415, 7416, 7417, 7418, + 7419, 7420, 7421, 7422, 7423, 7424, 7425, 7426, + }}, + {{ + 7427, 7428, 7429, 7430, 7431, 7432, 7433, 7434, + 7435, 7436, 7437, 7438, 7439, 7440, 7441, 7442, + 7443, 7444, 7445, 7446, 7447, 7448, 7449, 7450, + 7451, 7452, 7453, 7454, 7455, 7456, 7457, 7458, + }}, + {{ + 7459, 7460, 7461, 7462, 7463, 7464, 7465, 7466, + 7467, 7468, 7469, 7470, 7471, 7472, 7473, 7474, + 7475, 7476, 7477, 7478, 7479, 7480, 7481, 7482, + 7483, 7484, 7485, 7486, 7487, 7488, 7489, 7490, + }}, + {{ + 7491, 7492, 7493, 7494, 7495, 7496, 7497, 7498, + 7499, 7500, 7501, 7502, 7503, 7504, 7505, 7506, + 7507, 7508, 7509, 7510, 7511, 7512, 7513, 7514, + 7515, 7516, 7517, 7518, 7519, 7520, 7521, 7522, + }}, + {{ + 7523, 7524, 7525, 7526, 7527, 7528, 7529, 7530, + 7531, 7532, 7533, 7534, 7535, 7536, 7537, 7538, + 7539, 7540, 7541, 7542, 7543, 7544, 7545, 7546, + 7547, 7548, 7549, 7550, 7551, 7552, 7553, 7554, + }}, + {{ + 7555, 7556, 7557, 7558, 7559, 7560, 7561, 7562, + 7563, 7564, 7565, 7566, 7567, 7568, 7569, 7570, + 7571, 7572, 7573, 7574, 7575, 7576, 7577, 7578, + 7579, 7580, 7581, 7582, 7583, 7584, 7585, 7586, + }}, + {{ + 7587, 7588, 7589, 7590, 7591, 7592, 7593, 7594, + 7595, 7596, 7597, 7598, 7599, 7600, 7601, 7602, + 7603, 7604, 7605, 7606, 7607, 7608, 7609, 7610, + 7611, 7612, 7613, 7614, 7615, 7616, 0, 0, + }}, +}; +static const unsigned long v310_decompose_seq[] = { + 0x00000000, 0x80000020, 0x00000020, 0x80000308, + 0x80000061, 0x00000020, 0x80000304, 0x80000032, + 0x80000033, 0x00000020, 0x80000301, 0x800003bc, + 0x00000020, 0x80000327, 0x80000031, 0x8000006f, + 0x00000031, 0x00002044, 0x80000034, 0x00000031, + 0x00002044, 0x80000032, 0x00000033, 0x00002044, + 0x80000034, 0x00000041, 0x80000300, 0x00000041, + 0x80000301, 0x00000041, 0x80000302, 0x00000041, + 0x80000303, 0x00000041, 0x80000308, 0x00000041, + 0x8000030a, 0x00000043, 0x80000327, 0x00000045, + 0x80000300, 0x00000045, 0x80000301, 0x00000045, + 0x80000302, 0x00000045, 0x80000308, 0x00000049, + 0x80000300, 0x00000049, 0x80000301, 0x00000049, + 0x80000302, 0x00000049, 0x80000308, 0x0000004e, + 0x80000303, 0x0000004f, 0x80000300, 0x0000004f, + 0x80000301, 0x0000004f, 0x80000302, 0x0000004f, + 0x80000303, 0x0000004f, 0x80000308, 0x00000055, + 0x80000300, 0x00000055, 0x80000301, 0x00000055, + 0x80000302, 0x00000055, 0x80000308, 0x00000059, + 0x80000301, 0x00000061, 0x80000300, 0x00000061, + 0x80000301, 0x00000061, 0x80000302, 0x00000061, + 0x80000303, 0x00000061, 0x80000308, 0x00000061, + 0x8000030a, 0x00000063, 0x80000327, 0x00000065, + 0x80000300, 0x00000065, 0x80000301, 0x00000065, + 0x80000302, 0x00000065, 0x80000308, 0x00000069, + 0x80000300, 0x00000069, 0x80000301, 0x00000069, + 0x80000302, 0x00000069, 0x80000308, 0x0000006e, + 0x80000303, 0x0000006f, 0x80000300, 0x0000006f, + 0x80000301, 0x0000006f, 0x80000302, 0x0000006f, + 0x80000303, 0x0000006f, 0x80000308, 0x00000075, + 0x80000300, 0x00000075, 0x80000301, 0x00000075, + 0x80000302, 0x00000075, 0x80000308, 0x00000079, + 0x80000301, 0x00000079, 0x80000308, 0x00000041, + 0x80000304, 0x00000061, 0x80000304, 0x00000041, + 0x80000306, 0x00000061, 0x80000306, 0x00000041, + 0x80000328, 0x00000061, 0x80000328, 0x00000043, + 0x80000301, 0x00000063, 0x80000301, 0x00000043, + 0x80000302, 0x00000063, 0x80000302, 0x00000043, + 0x80000307, 0x00000063, 0x80000307, 0x00000043, + 0x8000030c, 0x00000063, 0x8000030c, 0x00000044, + 0x8000030c, 0x00000064, 0x8000030c, 0x00000045, + 0x80000304, 0x00000065, 0x80000304, 0x00000045, + 0x80000306, 0x00000065, 0x80000306, 0x00000045, + 0x80000307, 0x00000065, 0x80000307, 0x00000045, + 0x80000328, 0x00000065, 0x80000328, 0x00000045, + 0x8000030c, 0x00000065, 0x8000030c, 0x00000047, + 0x80000302, 0x00000067, 0x80000302, 0x00000047, + 0x80000306, 0x00000067, 0x80000306, 0x00000047, + 0x80000307, 0x00000067, 0x80000307, 0x00000047, + 0x80000327, 0x00000067, 0x80000327, 0x00000048, + 0x80000302, 0x00000068, 0x80000302, 0x00000049, + 0x80000303, 0x00000069, 0x80000303, 0x00000049, + 0x80000304, 0x00000069, 0x80000304, 0x00000049, + 0x80000306, 0x00000069, 0x80000306, 0x00000049, + 0x80000328, 0x00000069, 0x80000328, 0x00000049, + 0x80000307, 0x00000049, 0x8000004a, 0x00000069, + 0x8000006a, 0x0000004a, 0x80000302, 0x0000006a, + 0x80000302, 0x0000004b, 0x80000327, 0x0000006b, + 0x80000327, 0x0000004c, 0x80000301, 0x0000006c, + 0x80000301, 0x0000004c, 0x80000327, 0x0000006c, + 0x80000327, 0x0000004c, 0x8000030c, 0x0000006c, + 0x8000030c, 0x0000004c, 0x800000b7, 0x0000006c, + 0x800000b7, 0x0000004e, 0x80000301, 0x0000006e, + 0x80000301, 0x0000004e, 0x80000327, 0x0000006e, + 0x80000327, 0x0000004e, 0x8000030c, 0x0000006e, + 0x8000030c, 0x000002bc, 0x8000006e, 0x0000004f, + 0x80000304, 0x0000006f, 0x80000304, 0x0000004f, + 0x80000306, 0x0000006f, 0x80000306, 0x0000004f, + 0x8000030b, 0x0000006f, 0x8000030b, 0x00000052, + 0x80000301, 0x00000072, 0x80000301, 0x00000052, + 0x80000327, 0x00000072, 0x80000327, 0x00000052, + 0x8000030c, 0x00000072, 0x8000030c, 0x00000053, + 0x80000301, 0x00000073, 0x80000301, 0x00000053, + 0x80000302, 0x00000073, 0x80000302, 0x00000053, + 0x80000327, 0x00000073, 0x80000327, 0x00000053, + 0x8000030c, 0x00000073, 0x8000030c, 0x00000054, + 0x80000327, 0x00000074, 0x80000327, 0x00000054, + 0x8000030c, 0x00000074, 0x8000030c, 0x00000055, + 0x80000303, 0x00000075, 0x80000303, 0x00000055, + 0x80000304, 0x00000075, 0x80000304, 0x00000055, + 0x80000306, 0x00000075, 0x80000306, 0x00000055, + 0x8000030a, 0x00000075, 0x8000030a, 0x00000055, + 0x8000030b, 0x00000075, 0x8000030b, 0x00000055, + 0x80000328, 0x00000075, 0x80000328, 0x00000057, + 0x80000302, 0x00000077, 0x80000302, 0x00000059, + 0x80000302, 0x00000079, 0x80000302, 0x00000059, + 0x80000308, 0x0000005a, 0x80000301, 0x0000007a, + 0x80000301, 0x0000005a, 0x80000307, 0x0000007a, + 0x80000307, 0x0000005a, 0x8000030c, 0x0000007a, + 0x8000030c, 0x80000073, 0x0000004f, 0x8000031b, + 0x0000006f, 0x8000031b, 0x00000055, 0x8000031b, + 0x00000075, 0x8000031b, 0x00000044, 0x8000017d, + 0x00000044, 0x8000017e, 0x00000064, 0x8000017e, + 0x0000004c, 0x8000004a, 0x0000004c, 0x8000006a, + 0x0000006c, 0x8000006a, 0x0000004e, 0x8000004a, + 0x0000004e, 0x8000006a, 0x0000006e, 0x8000006a, + 0x00000041, 0x8000030c, 0x00000061, 0x8000030c, + 0x00000049, 0x8000030c, 0x00000069, 0x8000030c, + 0x0000004f, 0x8000030c, 0x0000006f, 0x8000030c, + 0x00000055, 0x8000030c, 0x00000075, 0x8000030c, + 0x000000dc, 0x80000304, 0x000000fc, 0x80000304, + 0x000000dc, 0x80000301, 0x000000fc, 0x80000301, + 0x000000dc, 0x8000030c, 0x000000fc, 0x8000030c, + 0x000000dc, 0x80000300, 0x000000fc, 0x80000300, + 0x000000c4, 0x80000304, 0x000000e4, 0x80000304, + 0x00000226, 0x80000304, 0x00000227, 0x80000304, + 0x000000c6, 0x80000304, 0x000000e6, 0x80000304, + 0x00000047, 0x8000030c, 0x00000067, 0x8000030c, + 0x0000004b, 0x8000030c, 0x0000006b, 0x8000030c, + 0x0000004f, 0x80000328, 0x0000006f, 0x80000328, + 0x000001ea, 0x80000304, 0x000001eb, 0x80000304, + 0x000001b7, 0x8000030c, 0x00000292, 0x8000030c, + 0x0000006a, 0x8000030c, 0x00000044, 0x8000005a, + 0x00000044, 0x8000007a, 0x00000064, 0x8000007a, + 0x00000047, 0x80000301, 0x00000067, 0x80000301, + 0x0000004e, 0x80000300, 0x0000006e, 0x80000300, + 0x000000c5, 0x80000301, 0x000000e5, 0x80000301, + 0x000000c6, 0x80000301, 0x000000e6, 0x80000301, + 0x000000d8, 0x80000301, 0x000000f8, 0x80000301, + 0x00000041, 0x8000030f, 0x00000061, 0x8000030f, + 0x00000041, 0x80000311, 0x00000061, 0x80000311, + 0x00000045, 0x8000030f, 0x00000065, 0x8000030f, + 0x00000045, 0x80000311, 0x00000065, 0x80000311, + 0x00000049, 0x8000030f, 0x00000069, 0x8000030f, + 0x00000049, 0x80000311, 0x00000069, 0x80000311, + 0x0000004f, 0x8000030f, 0x0000006f, 0x8000030f, + 0x0000004f, 0x80000311, 0x0000006f, 0x80000311, + 0x00000052, 0x8000030f, 0x00000072, 0x8000030f, + 0x00000052, 0x80000311, 0x00000072, 0x80000311, + 0x00000055, 0x8000030f, 0x00000075, 0x8000030f, + 0x00000055, 0x80000311, 0x00000075, 0x80000311, + 0x00000053, 0x80000326, 0x00000073, 0x80000326, + 0x00000054, 0x80000326, 0x00000074, 0x80000326, + 0x00000048, 0x8000030c, 0x00000068, 0x8000030c, + 0x00000041, 0x80000307, 0x00000061, 0x80000307, + 0x00000045, 0x80000327, 0x00000065, 0x80000327, + 0x000000d6, 0x80000304, 0x000000f6, 0x80000304, + 0x000000d5, 0x80000304, 0x000000f5, 0x80000304, + 0x0000004f, 0x80000307, 0x0000006f, 0x80000307, + 0x0000022e, 0x80000304, 0x0000022f, 0x80000304, + 0x00000059, 0x80000304, 0x00000079, 0x80000304, + 0x80000068, 0x80000266, 0x8000006a, 0x80000072, + 0x80000279, 0x8000027b, 0x80000281, 0x80000077, + 0x80000079, 0x00000020, 0x80000306, 0x00000020, + 0x80000307, 0x00000020, 0x8000030a, 0x00000020, + 0x80000328, 0x00000020, 0x80000303, 0x00000020, + 0x8000030b, 0x80000263, 0x8000006c, 0x80000073, + 0x80000078, 0x80000295, 0x80000300, 0x80000301, + 0x80000313, 0x00000308, 0x80000301, 0x800002b9, + 0x00000020, 0x80000345, 0x8000003b, 0x00000020, + 0x80000301, 0x000000a8, 0x80000301, 0x00000391, + 0x80000301, 0x800000b7, 0x00000395, 0x80000301, + 0x00000397, 0x80000301, 0x00000399, 0x80000301, + 0x0000039f, 0x80000301, 0x000003a5, 0x80000301, + 0x000003a9, 0x80000301, 0x000003ca, 0x80000301, + 0x00000399, 0x80000308, 0x000003a5, 0x80000308, + 0x000003b1, 0x80000301, 0x000003b5, 0x80000301, + 0x000003b7, 0x80000301, 0x000003b9, 0x80000301, + 0x000003cb, 0x80000301, 0x000003b9, 0x80000308, + 0x000003c5, 0x80000308, 0x000003bf, 0x80000301, + 0x000003c5, 0x80000301, 0x000003c9, 0x80000301, + 0x800003b2, 0x800003b8, 0x800003a5, 0x000003d2, + 0x80000301, 0x000003d2, 0x80000308, 0x800003c6, + 0x800003c0, 0x800003ba, 0x800003c1, 0x800003c2, + 0x80000398, 0x800003b5, 0x00000415, 0x80000300, + 0x00000415, 0x80000308, 0x00000413, 0x80000301, + 0x00000406, 0x80000308, 0x0000041a, 0x80000301, + 0x00000418, 0x80000300, 0x00000423, 0x80000306, + 0x00000418, 0x80000306, 0x00000438, 0x80000306, + 0x00000435, 0x80000300, 0x00000435, 0x80000308, + 0x00000433, 0x80000301, 0x00000456, 0x80000308, + 0x0000043a, 0x80000301, 0x00000438, 0x80000300, + 0x00000443, 0x80000306, 0x00000474, 0x8000030f, + 0x00000475, 0x8000030f, 0x00000416, 0x80000306, + 0x00000436, 0x80000306, 0x00000410, 0x80000306, + 0x00000430, 0x80000306, 0x00000410, 0x80000308, + 0x00000430, 0x80000308, 0x00000415, 0x80000306, + 0x00000435, 0x80000306, 0x000004d8, 0x80000308, + 0x000004d9, 0x80000308, 0x00000416, 0x80000308, + 0x00000436, 0x80000308, 0x00000417, 0x80000308, + 0x00000437, 0x80000308, 0x00000418, 0x80000304, + 0x00000438, 0x80000304, 0x00000418, 0x80000308, + 0x00000438, 0x80000308, 0x0000041e, 0x80000308, + 0x0000043e, 0x80000308, 0x000004e8, 0x80000308, + 0x000004e9, 0x80000308, 0x0000042d, 0x80000308, + 0x0000044d, 0x80000308, 0x00000423, 0x80000304, + 0x00000443, 0x80000304, 0x00000423, 0x80000308, + 0x00000443, 0x80000308, 0x00000423, 0x8000030b, + 0x00000443, 0x8000030b, 0x00000427, 0x80000308, + 0x00000447, 0x80000308, 0x0000042b, 0x80000308, + 0x0000044b, 0x80000308, 0x00000565, 0x80000582, + 0x00000627, 0x80000653, 0x00000627, 0x80000654, + 0x00000648, 0x80000654, 0x00000627, 0x80000655, + 0x0000064a, 0x80000654, 0x00000627, 0x80000674, + 0x00000648, 0x80000674, 0x000006c7, 0x80000674, + 0x0000064a, 0x80000674, 0x000006d5, 0x80000654, + 0x000006c1, 0x80000654, 0x000006d2, 0x80000654, + 0x00000928, 0x8000093c, 0x00000930, 0x8000093c, + 0x00000933, 0x8000093c, 0x00000915, 0x8000093c, + 0x00000916, 0x8000093c, 0x00000917, 0x8000093c, + 0x0000091c, 0x8000093c, 0x00000921, 0x8000093c, + 0x00000922, 0x8000093c, 0x0000092b, 0x8000093c, + 0x0000092f, 0x8000093c, 0x000009c7, 0x800009be, + 0x000009c7, 0x800009d7, 0x000009a1, 0x800009bc, + 0x000009a2, 0x800009bc, 0x000009af, 0x800009bc, + 0x00000a32, 0x80000a3c, 0x00000a38, 0x80000a3c, + 0x00000a16, 0x80000a3c, 0x00000a17, 0x80000a3c, + 0x00000a1c, 0x80000a3c, 0x00000a2b, 0x80000a3c, + 0x00000b47, 0x80000b56, 0x00000b47, 0x80000b3e, + 0x00000b47, 0x80000b57, 0x00000b21, 0x80000b3c, + 0x00000b22, 0x80000b3c, 0x00000b92, 0x80000bd7, + 0x00000bc6, 0x80000bbe, 0x00000bc7, 0x80000bbe, + 0x00000bc6, 0x80000bd7, 0x00000c46, 0x80000c56, + 0x00000cbf, 0x80000cd5, 0x00000cc6, 0x80000cd5, + 0x00000cc6, 0x80000cd6, 0x00000cc6, 0x80000cc2, + 0x00000cca, 0x80000cd5, 0x00000d46, 0x80000d3e, + 0x00000d47, 0x80000d3e, 0x00000d46, 0x80000d57, + 0x00000dd9, 0x80000dca, 0x00000dd9, 0x80000dcf, + 0x00000ddc, 0x80000dca, 0x00000dd9, 0x80000ddf, + 0x00000e4d, 0x80000e32, 0x00000ecd, 0x80000eb2, + 0x00000eab, 0x80000e99, 0x00000eab, 0x80000ea1, + 0x80000f0b, 0x00000f42, 0x80000fb7, 0x00000f4c, + 0x80000fb7, 0x00000f51, 0x80000fb7, 0x00000f56, + 0x80000fb7, 0x00000f5b, 0x80000fb7, 0x00000f40, + 0x80000fb5, 0x00000f71, 0x80000f72, 0x00000f71, + 0x80000f74, 0x00000fb2, 0x80000f80, 0x00000fb2, + 0x80000f81, 0x00000fb3, 0x80000f80, 0x00000fb3, + 0x80000f81, 0x00000f71, 0x80000f80, 0x00000f92, + 0x80000fb7, 0x00000f9c, 0x80000fb7, 0x00000fa1, + 0x80000fb7, 0x00000fa6, 0x80000fb7, 0x00000fab, + 0x80000fb7, 0x00000f90, 0x80000fb5, 0x00001025, + 0x8000102e, 0x00000041, 0x80000325, 0x00000061, + 0x80000325, 0x00000042, 0x80000307, 0x00000062, + 0x80000307, 0x00000042, 0x80000323, 0x00000062, + 0x80000323, 0x00000042, 0x80000331, 0x00000062, + 0x80000331, 0x000000c7, 0x80000301, 0x000000e7, + 0x80000301, 0x00000044, 0x80000307, 0x00000064, + 0x80000307, 0x00000044, 0x80000323, 0x00000064, + 0x80000323, 0x00000044, 0x80000331, 0x00000064, + 0x80000331, 0x00000044, 0x80000327, 0x00000064, + 0x80000327, 0x00000044, 0x8000032d, 0x00000064, + 0x8000032d, 0x00000112, 0x80000300, 0x00000113, + 0x80000300, 0x00000112, 0x80000301, 0x00000113, + 0x80000301, 0x00000045, 0x8000032d, 0x00000065, + 0x8000032d, 0x00000045, 0x80000330, 0x00000065, + 0x80000330, 0x00000228, 0x80000306, 0x00000229, + 0x80000306, 0x00000046, 0x80000307, 0x00000066, + 0x80000307, 0x00000047, 0x80000304, 0x00000067, + 0x80000304, 0x00000048, 0x80000307, 0x00000068, + 0x80000307, 0x00000048, 0x80000323, 0x00000068, + 0x80000323, 0x00000048, 0x80000308, 0x00000068, + 0x80000308, 0x00000048, 0x80000327, 0x00000068, + 0x80000327, 0x00000048, 0x8000032e, 0x00000068, + 0x8000032e, 0x00000049, 0x80000330, 0x00000069, + 0x80000330, 0x000000cf, 0x80000301, 0x000000ef, + 0x80000301, 0x0000004b, 0x80000301, 0x0000006b, + 0x80000301, 0x0000004b, 0x80000323, 0x0000006b, + 0x80000323, 0x0000004b, 0x80000331, 0x0000006b, + 0x80000331, 0x0000004c, 0x80000323, 0x0000006c, + 0x80000323, 0x00001e36, 0x80000304, 0x00001e37, + 0x80000304, 0x0000004c, 0x80000331, 0x0000006c, + 0x80000331, 0x0000004c, 0x8000032d, 0x0000006c, + 0x8000032d, 0x0000004d, 0x80000301, 0x0000006d, + 0x80000301, 0x0000004d, 0x80000307, 0x0000006d, + 0x80000307, 0x0000004d, 0x80000323, 0x0000006d, + 0x80000323, 0x0000004e, 0x80000307, 0x0000006e, + 0x80000307, 0x0000004e, 0x80000323, 0x0000006e, + 0x80000323, 0x0000004e, 0x80000331, 0x0000006e, + 0x80000331, 0x0000004e, 0x8000032d, 0x0000006e, + 0x8000032d, 0x000000d5, 0x80000301, 0x000000f5, + 0x80000301, 0x000000d5, 0x80000308, 0x000000f5, + 0x80000308, 0x0000014c, 0x80000300, 0x0000014d, + 0x80000300, 0x0000014c, 0x80000301, 0x0000014d, + 0x80000301, 0x00000050, 0x80000301, 0x00000070, + 0x80000301, 0x00000050, 0x80000307, 0x00000070, + 0x80000307, 0x00000052, 0x80000307, 0x00000072, + 0x80000307, 0x00000052, 0x80000323, 0x00000072, + 0x80000323, 0x00001e5a, 0x80000304, 0x00001e5b, + 0x80000304, 0x00000052, 0x80000331, 0x00000072, + 0x80000331, 0x00000053, 0x80000307, 0x00000073, + 0x80000307, 0x00000053, 0x80000323, 0x00000073, + 0x80000323, 0x0000015a, 0x80000307, 0x0000015b, + 0x80000307, 0x00000160, 0x80000307, 0x00000161, + 0x80000307, 0x00001e62, 0x80000307, 0x00001e63, + 0x80000307, 0x00000054, 0x80000307, 0x00000074, + 0x80000307, 0x00000054, 0x80000323, 0x00000074, + 0x80000323, 0x00000054, 0x80000331, 0x00000074, + 0x80000331, 0x00000054, 0x8000032d, 0x00000074, + 0x8000032d, 0x00000055, 0x80000324, 0x00000075, + 0x80000324, 0x00000055, 0x80000330, 0x00000075, + 0x80000330, 0x00000055, 0x8000032d, 0x00000075, + 0x8000032d, 0x00000168, 0x80000301, 0x00000169, + 0x80000301, 0x0000016a, 0x80000308, 0x0000016b, + 0x80000308, 0x00000056, 0x80000303, 0x00000076, + 0x80000303, 0x00000056, 0x80000323, 0x00000076, + 0x80000323, 0x00000057, 0x80000300, 0x00000077, + 0x80000300, 0x00000057, 0x80000301, 0x00000077, + 0x80000301, 0x00000057, 0x80000308, 0x00000077, + 0x80000308, 0x00000057, 0x80000307, 0x00000077, + 0x80000307, 0x00000057, 0x80000323, 0x00000077, + 0x80000323, 0x00000058, 0x80000307, 0x00000078, + 0x80000307, 0x00000058, 0x80000308, 0x00000078, + 0x80000308, 0x00000059, 0x80000307, 0x00000079, + 0x80000307, 0x0000005a, 0x80000302, 0x0000007a, + 0x80000302, 0x0000005a, 0x80000323, 0x0000007a, + 0x80000323, 0x0000005a, 0x80000331, 0x0000007a, + 0x80000331, 0x00000068, 0x80000331, 0x00000074, + 0x80000308, 0x00000077, 0x8000030a, 0x00000079, + 0x8000030a, 0x00000061, 0x800002be, 0x0000017f, + 0x80000307, 0x00000041, 0x80000323, 0x00000061, + 0x80000323, 0x00000041, 0x80000309, 0x00000061, + 0x80000309, 0x000000c2, 0x80000301, 0x000000e2, + 0x80000301, 0x000000c2, 0x80000300, 0x000000e2, + 0x80000300, 0x000000c2, 0x80000309, 0x000000e2, + 0x80000309, 0x000000c2, 0x80000303, 0x000000e2, + 0x80000303, 0x00001ea0, 0x80000302, 0x00001ea1, + 0x80000302, 0x00000102, 0x80000301, 0x00000103, + 0x80000301, 0x00000102, 0x80000300, 0x00000103, + 0x80000300, 0x00000102, 0x80000309, 0x00000103, + 0x80000309, 0x00000102, 0x80000303, 0x00000103, + 0x80000303, 0x00001ea0, 0x80000306, 0x00001ea1, + 0x80000306, 0x00000045, 0x80000323, 0x00000065, + 0x80000323, 0x00000045, 0x80000309, 0x00000065, + 0x80000309, 0x00000045, 0x80000303, 0x00000065, + 0x80000303, 0x000000ca, 0x80000301, 0x000000ea, + 0x80000301, 0x000000ca, 0x80000300, 0x000000ea, + 0x80000300, 0x000000ca, 0x80000309, 0x000000ea, + 0x80000309, 0x000000ca, 0x80000303, 0x000000ea, + 0x80000303, 0x00001eb8, 0x80000302, 0x00001eb9, + 0x80000302, 0x00000049, 0x80000309, 0x00000069, + 0x80000309, 0x00000049, 0x80000323, 0x00000069, + 0x80000323, 0x0000004f, 0x80000323, 0x0000006f, + 0x80000323, 0x0000004f, 0x80000309, 0x0000006f, + 0x80000309, 0x000000d4, 0x80000301, 0x000000f4, + 0x80000301, 0x000000d4, 0x80000300, 0x000000f4, + 0x80000300, 0x000000d4, 0x80000309, 0x000000f4, + 0x80000309, 0x000000d4, 0x80000303, 0x000000f4, + 0x80000303, 0x00001ecc, 0x80000302, 0x00001ecd, + 0x80000302, 0x000001a0, 0x80000301, 0x000001a1, + 0x80000301, 0x000001a0, 0x80000300, 0x000001a1, + 0x80000300, 0x000001a0, 0x80000309, 0x000001a1, + 0x80000309, 0x000001a0, 0x80000303, 0x000001a1, + 0x80000303, 0x000001a0, 0x80000323, 0x000001a1, + 0x80000323, 0x00000055, 0x80000323, 0x00000075, + 0x80000323, 0x00000055, 0x80000309, 0x00000075, + 0x80000309, 0x000001af, 0x80000301, 0x000001b0, + 0x80000301, 0x000001af, 0x80000300, 0x000001b0, + 0x80000300, 0x000001af, 0x80000309, 0x000001b0, + 0x80000309, 0x000001af, 0x80000303, 0x000001b0, + 0x80000303, 0x000001af, 0x80000323, 0x000001b0, + 0x80000323, 0x00000059, 0x80000300, 0x00000079, + 0x80000300, 0x00000059, 0x80000323, 0x00000079, + 0x80000323, 0x00000059, 0x80000309, 0x00000079, + 0x80000309, 0x00000059, 0x80000303, 0x00000079, + 0x80000303, 0x000003b1, 0x80000313, 0x000003b1, + 0x80000314, 0x00001f00, 0x80000300, 0x00001f01, + 0x80000300, 0x00001f00, 0x80000301, 0x00001f01, + 0x80000301, 0x00001f00, 0x80000342, 0x00001f01, + 0x80000342, 0x00000391, 0x80000313, 0x00000391, + 0x80000314, 0x00001f08, 0x80000300, 0x00001f09, + 0x80000300, 0x00001f08, 0x80000301, 0x00001f09, + 0x80000301, 0x00001f08, 0x80000342, 0x00001f09, + 0x80000342, 0x000003b5, 0x80000313, 0x000003b5, + 0x80000314, 0x00001f10, 0x80000300, 0x00001f11, + 0x80000300, 0x00001f10, 0x80000301, 0x00001f11, + 0x80000301, 0x00000395, 0x80000313, 0x00000395, + 0x80000314, 0x00001f18, 0x80000300, 0x00001f19, + 0x80000300, 0x00001f18, 0x80000301, 0x00001f19, + 0x80000301, 0x000003b7, 0x80000313, 0x000003b7, + 0x80000314, 0x00001f20, 0x80000300, 0x00001f21, + 0x80000300, 0x00001f20, 0x80000301, 0x00001f21, + 0x80000301, 0x00001f20, 0x80000342, 0x00001f21, + 0x80000342, 0x00000397, 0x80000313, 0x00000397, + 0x80000314, 0x00001f28, 0x80000300, 0x00001f29, + 0x80000300, 0x00001f28, 0x80000301, 0x00001f29, + 0x80000301, 0x00001f28, 0x80000342, 0x00001f29, + 0x80000342, 0x000003b9, 0x80000313, 0x000003b9, + 0x80000314, 0x00001f30, 0x80000300, 0x00001f31, + 0x80000300, 0x00001f30, 0x80000301, 0x00001f31, + 0x80000301, 0x00001f30, 0x80000342, 0x00001f31, + 0x80000342, 0x00000399, 0x80000313, 0x00000399, + 0x80000314, 0x00001f38, 0x80000300, 0x00001f39, + 0x80000300, 0x00001f38, 0x80000301, 0x00001f39, + 0x80000301, 0x00001f38, 0x80000342, 0x00001f39, + 0x80000342, 0x000003bf, 0x80000313, 0x000003bf, + 0x80000314, 0x00001f40, 0x80000300, 0x00001f41, + 0x80000300, 0x00001f40, 0x80000301, 0x00001f41, + 0x80000301, 0x0000039f, 0x80000313, 0x0000039f, + 0x80000314, 0x00001f48, 0x80000300, 0x00001f49, + 0x80000300, 0x00001f48, 0x80000301, 0x00001f49, + 0x80000301, 0x000003c5, 0x80000313, 0x000003c5, + 0x80000314, 0x00001f50, 0x80000300, 0x00001f51, + 0x80000300, 0x00001f50, 0x80000301, 0x00001f51, + 0x80000301, 0x00001f50, 0x80000342, 0x00001f51, + 0x80000342, 0x000003a5, 0x80000314, 0x00001f59, + 0x80000300, 0x00001f59, 0x80000301, 0x00001f59, + 0x80000342, 0x000003c9, 0x80000313, 0x000003c9, + 0x80000314, 0x00001f60, 0x80000300, 0x00001f61, + 0x80000300, 0x00001f60, 0x80000301, 0x00001f61, + 0x80000301, 0x00001f60, 0x80000342, 0x00001f61, + 0x80000342, 0x000003a9, 0x80000313, 0x000003a9, + 0x80000314, 0x00001f68, 0x80000300, 0x00001f69, + 0x80000300, 0x00001f68, 0x80000301, 0x00001f69, + 0x80000301, 0x00001f68, 0x80000342, 0x00001f69, + 0x80000342, 0x000003b1, 0x80000300, 0x800003ac, + 0x000003b5, 0x80000300, 0x800003ad, 0x000003b7, + 0x80000300, 0x800003ae, 0x000003b9, 0x80000300, + 0x800003af, 0x000003bf, 0x80000300, 0x800003cc, + 0x000003c5, 0x80000300, 0x800003cd, 0x000003c9, + 0x80000300, 0x800003ce, 0x00001f00, 0x80000345, + 0x00001f01, 0x80000345, 0x00001f02, 0x80000345, + 0x00001f03, 0x80000345, 0x00001f04, 0x80000345, + 0x00001f05, 0x80000345, 0x00001f06, 0x80000345, + 0x00001f07, 0x80000345, 0x00001f08, 0x80000345, + 0x00001f09, 0x80000345, 0x00001f0a, 0x80000345, + 0x00001f0b, 0x80000345, 0x00001f0c, 0x80000345, + 0x00001f0d, 0x80000345, 0x00001f0e, 0x80000345, + 0x00001f0f, 0x80000345, 0x00001f20, 0x80000345, + 0x00001f21, 0x80000345, 0x00001f22, 0x80000345, + 0x00001f23, 0x80000345, 0x00001f24, 0x80000345, + 0x00001f25, 0x80000345, 0x00001f26, 0x80000345, + 0x00001f27, 0x80000345, 0x00001f28, 0x80000345, + 0x00001f29, 0x80000345, 0x00001f2a, 0x80000345, + 0x00001f2b, 0x80000345, 0x00001f2c, 0x80000345, + 0x00001f2d, 0x80000345, 0x00001f2e, 0x80000345, + 0x00001f2f, 0x80000345, 0x00001f60, 0x80000345, + 0x00001f61, 0x80000345, 0x00001f62, 0x80000345, + 0x00001f63, 0x80000345, 0x00001f64, 0x80000345, + 0x00001f65, 0x80000345, 0x00001f66, 0x80000345, + 0x00001f67, 0x80000345, 0x00001f68, 0x80000345, + 0x00001f69, 0x80000345, 0x00001f6a, 0x80000345, + 0x00001f6b, 0x80000345, 0x00001f6c, 0x80000345, + 0x00001f6d, 0x80000345, 0x00001f6e, 0x80000345, + 0x00001f6f, 0x80000345, 0x000003b1, 0x80000306, + 0x000003b1, 0x80000304, 0x00001f70, 0x80000345, + 0x000003b1, 0x80000345, 0x000003ac, 0x80000345, + 0x000003b1, 0x80000342, 0x00001fb6, 0x80000345, + 0x00000391, 0x80000306, 0x00000391, 0x80000304, + 0x00000391, 0x80000300, 0x80000386, 0x00000391, + 0x80000345, 0x00000020, 0x80000313, 0x800003b9, + 0x00000020, 0x80000313, 0x00000020, 0x80000342, + 0x000000a8, 0x80000342, 0x00001f74, 0x80000345, + 0x000003b7, 0x80000345, 0x000003ae, 0x80000345, + 0x000003b7, 0x80000342, 0x00001fc6, 0x80000345, + 0x00000395, 0x80000300, 0x80000388, 0x00000397, + 0x80000300, 0x80000389, 0x00000397, 0x80000345, + 0x00001fbf, 0x80000300, 0x00001fbf, 0x80000301, + 0x00001fbf, 0x80000342, 0x000003b9, 0x80000306, + 0x000003b9, 0x80000304, 0x000003ca, 0x80000300, + 0x80000390, 0x000003b9, 0x80000342, 0x000003ca, + 0x80000342, 0x00000399, 0x80000306, 0x00000399, + 0x80000304, 0x00000399, 0x80000300, 0x8000038a, + 0x00001ffe, 0x80000300, 0x00001ffe, 0x80000301, + 0x00001ffe, 0x80000342, 0x000003c5, 0x80000306, + 0x000003c5, 0x80000304, 0x000003cb, 0x80000300, + 0x800003b0, 0x000003c1, 0x80000313, 0x000003c1, + 0x80000314, 0x000003c5, 0x80000342, 0x000003cb, + 0x80000342, 0x000003a5, 0x80000306, 0x000003a5, + 0x80000304, 0x000003a5, 0x80000300, 0x8000038e, + 0x000003a1, 0x80000314, 0x000000a8, 0x80000300, + 0x80000385, 0x80000060, 0x00001f7c, 0x80000345, + 0x000003c9, 0x80000345, 0x000003ce, 0x80000345, + 0x000003c9, 0x80000342, 0x00001ff6, 0x80000345, + 0x0000039f, 0x80000300, 0x8000038c, 0x000003a9, + 0x80000300, 0x8000038f, 0x000003a9, 0x80000345, + 0x800000b4, 0x00000020, 0x80000314, 0x80002002, + 0x80002003, 0x80000020, 0x80000020, 0x80000020, + 0x80000020, 0x80000020, 0x80000020, 0x80000020, + 0x80000020, 0x80000020, 0x80002010, 0x00000020, + 0x80000333, 0x8000002e, 0x0000002e, 0x8000002e, + 0x0000002e, 0x0000002e, 0x8000002e, 0x80000020, + 0x00002032, 0x80002032, 0x00002032, 0x00002032, + 0x80002032, 0x00002035, 0x80002035, 0x00002035, + 0x00002035, 0x80002035, 0x00000021, 0x80000021, + 0x00000020, 0x80000305, 0x0000003f, 0x80000021, + 0x00000021, 0x8000003f, 0x80000030, 0x80000034, + 0x80000035, 0x80000036, 0x80000037, 0x80000038, + 0x80000039, 0x8000002b, 0x80002212, 0x8000003d, + 0x80000028, 0x80000029, 0x8000006e, 0x80000030, + 0x80000031, 0x80000032, 0x80000033, 0x80000034, + 0x80000035, 0x80000036, 0x80000037, 0x80000038, + 0x80000039, 0x8000002b, 0x80002212, 0x8000003d, + 0x80000028, 0x80000029, 0x00000052, 0x80000073, + 0x00000061, 0x0000002f, 0x80000063, 0x00000061, + 0x0000002f, 0x80000073, 0x80000043, 0x000000b0, + 0x80000043, 0x00000063, 0x0000002f, 0x8000006f, + 0x00000063, 0x0000002f, 0x80000075, 0x80000190, + 0x000000b0, 0x80000046, 0x80000067, 0x80000048, + 0x80000048, 0x80000048, 0x80000068, 0x80000127, + 0x80000049, 0x80000049, 0x8000004c, 0x8000006c, + 0x8000004e, 0x0000004e, 0x8000006f, 0x80000050, + 0x80000051, 0x80000052, 0x80000052, 0x80000052, + 0x00000053, 0x8000004d, 0x00000054, 0x00000045, + 0x8000004c, 0x00000054, 0x8000004d, 0x8000005a, + 0x800003a9, 0x8000005a, 0x8000004b, 0x800000c5, + 0x80000042, 0x80000043, 0x80000065, 0x80000045, + 0x80000046, 0x8000004d, 0x8000006f, 0x800005d0, + 0x800005d1, 0x800005d2, 0x800005d3, 0x80000069, + 0x00000031, 0x00002044, 0x80000033, 0x00000032, + 0x00002044, 0x80000033, 0x00000031, 0x00002044, + 0x80000035, 0x00000032, 0x00002044, 0x80000035, + 0x00000033, 0x00002044, 0x80000035, 0x00000034, + 0x00002044, 0x80000035, 0x00000031, 0x00002044, + 0x80000036, 0x00000035, 0x00002044, 0x80000036, + 0x00000031, 0x00002044, 0x80000038, 0x00000033, + 0x00002044, 0x80000038, 0x00000035, 0x00002044, + 0x80000038, 0x00000037, 0x00002044, 0x80000038, + 0x00000031, 0x80002044, 0x80000049, 0x00000049, + 0x80000049, 0x00000049, 0x00000049, 0x80000049, + 0x00000049, 0x80000056, 0x80000056, 0x00000056, + 0x80000049, 0x00000056, 0x00000049, 0x80000049, + 0x00000056, 0x00000049, 0x00000049, 0x80000049, + 0x00000049, 0x80000058, 0x80000058, 0x00000058, + 0x80000049, 0x00000058, 0x00000049, 0x80000049, + 0x8000004c, 0x80000043, 0x80000044, 0x8000004d, + 0x80000069, 0x00000069, 0x80000069, 0x00000069, + 0x00000069, 0x80000069, 0x00000069, 0x80000076, + 0x80000076, 0x00000076, 0x80000069, 0x00000076, + 0x00000069, 0x80000069, 0x00000076, 0x00000069, + 0x00000069, 0x80000069, 0x00000069, 0x80000078, + 0x80000078, 0x00000078, 0x80000069, 0x00000078, + 0x00000069, 0x80000069, 0x8000006c, 0x80000063, + 0x80000064, 0x8000006d, 0x00002190, 0x80000338, + 0x00002192, 0x80000338, 0x00002194, 0x80000338, + 0x000021d0, 0x80000338, 0x000021d4, 0x80000338, + 0x000021d2, 0x80000338, 0x00002203, 0x80000338, + 0x00002208, 0x80000338, 0x0000220b, 0x80000338, + 0x00002223, 0x80000338, 0x00002225, 0x80000338, + 0x0000222b, 0x8000222b, 0x0000222b, 0x0000222b, + 0x8000222b, 0x0000222e, 0x8000222e, 0x0000222e, + 0x0000222e, 0x8000222e, 0x0000223c, 0x80000338, + 0x00002243, 0x80000338, 0x00002245, 0x80000338, + 0x00002248, 0x80000338, 0x0000003d, 0x80000338, + 0x00002261, 0x80000338, 0x0000224d, 0x80000338, + 0x0000003c, 0x80000338, 0x0000003e, 0x80000338, + 0x00002264, 0x80000338, 0x00002265, 0x80000338, + 0x00002272, 0x80000338, 0x00002273, 0x80000338, + 0x00002276, 0x80000338, 0x00002277, 0x80000338, + 0x0000227a, 0x80000338, 0x0000227b, 0x80000338, + 0x00002282, 0x80000338, 0x00002283, 0x80000338, + 0x00002286, 0x80000338, 0x00002287, 0x80000338, + 0x000022a2, 0x80000338, 0x000022a8, 0x80000338, + 0x000022a9, 0x80000338, 0x000022ab, 0x80000338, + 0x0000227c, 0x80000338, 0x0000227d, 0x80000338, + 0x00002291, 0x80000338, 0x00002292, 0x80000338, + 0x000022b2, 0x80000338, 0x000022b3, 0x80000338, + 0x000022b4, 0x80000338, 0x000022b5, 0x80000338, + 0x80003008, 0x80003009, 0x80000031, 0x80000032, + 0x80000033, 0x80000034, 0x80000035, 0x80000036, + 0x80000037, 0x80000038, 0x80000039, 0x00000031, + 0x80000030, 0x00000031, 0x80000031, 0x00000031, + 0x80000032, 0x00000031, 0x80000033, 0x00000031, + 0x80000034, 0x00000031, 0x80000035, 0x00000031, + 0x80000036, 0x00000031, 0x80000037, 0x00000031, + 0x80000038, 0x00000031, 0x80000039, 0x00000032, + 0x80000030, 0x00000028, 0x00000031, 0x80000029, + 0x00000028, 0x00000032, 0x80000029, 0x00000028, + 0x00000033, 0x80000029, 0x00000028, 0x00000034, + 0x80000029, 0x00000028, 0x00000035, 0x80000029, + 0x00000028, 0x00000036, 0x80000029, 0x00000028, + 0x00000037, 0x80000029, 0x00000028, 0x00000038, + 0x80000029, 0x00000028, 0x00000039, 0x80000029, + 0x00000028, 0x00000031, 0x00000030, 0x80000029, + 0x00000028, 0x00000031, 0x00000031, 0x80000029, + 0x00000028, 0x00000031, 0x00000032, 0x80000029, + 0x00000028, 0x00000031, 0x00000033, 0x80000029, + 0x00000028, 0x00000031, 0x00000034, 0x80000029, + 0x00000028, 0x00000031, 0x00000035, 0x80000029, + 0x00000028, 0x00000031, 0x00000036, 0x80000029, + 0x00000028, 0x00000031, 0x00000037, 0x80000029, + 0x00000028, 0x00000031, 0x00000038, 0x80000029, + 0x00000028, 0x00000031, 0x00000039, 0x80000029, + 0x00000028, 0x00000032, 0x00000030, 0x80000029, + 0x00000031, 0x8000002e, 0x00000032, 0x8000002e, + 0x00000033, 0x8000002e, 0x00000034, 0x8000002e, + 0x00000035, 0x8000002e, 0x00000036, 0x8000002e, + 0x00000037, 0x8000002e, 0x00000038, 0x8000002e, + 0x00000039, 0x8000002e, 0x00000031, 0x00000030, + 0x8000002e, 0x00000031, 0x00000031, 0x8000002e, + 0x00000031, 0x00000032, 0x8000002e, 0x00000031, + 0x00000033, 0x8000002e, 0x00000031, 0x00000034, + 0x8000002e, 0x00000031, 0x00000035, 0x8000002e, + 0x00000031, 0x00000036, 0x8000002e, 0x00000031, + 0x00000037, 0x8000002e, 0x00000031, 0x00000038, + 0x8000002e, 0x00000031, 0x00000039, 0x8000002e, + 0x00000032, 0x00000030, 0x8000002e, 0x00000028, + 0x00000061, 0x80000029, 0x00000028, 0x00000062, + 0x80000029, 0x00000028, 0x00000063, 0x80000029, + 0x00000028, 0x00000064, 0x80000029, 0x00000028, + 0x00000065, 0x80000029, 0x00000028, 0x00000066, + 0x80000029, 0x00000028, 0x00000067, 0x80000029, + 0x00000028, 0x00000068, 0x80000029, 0x00000028, + 0x00000069, 0x80000029, 0x00000028, 0x0000006a, + 0x80000029, 0x00000028, 0x0000006b, 0x80000029, + 0x00000028, 0x0000006c, 0x80000029, 0x00000028, + 0x0000006d, 0x80000029, 0x00000028, 0x0000006e, + 0x80000029, 0x00000028, 0x0000006f, 0x80000029, + 0x00000028, 0x00000070, 0x80000029, 0x00000028, + 0x00000071, 0x80000029, 0x00000028, 0x00000072, + 0x80000029, 0x00000028, 0x00000073, 0x80000029, + 0x00000028, 0x00000074, 0x80000029, 0x00000028, + 0x00000075, 0x80000029, 0x00000028, 0x00000076, + 0x80000029, 0x00000028, 0x00000077, 0x80000029, + 0x00000028, 0x00000078, 0x80000029, 0x00000028, + 0x00000079, 0x80000029, 0x00000028, 0x0000007a, + 0x80000029, 0x80000041, 0x80000042, 0x80000043, + 0x80000044, 0x80000045, 0x80000046, 0x80000047, + 0x80000048, 0x80000049, 0x8000004a, 0x8000004b, + 0x8000004c, 0x8000004d, 0x8000004e, 0x8000004f, + 0x80000050, 0x80000051, 0x80000052, 0x80000053, + 0x80000054, 0x80000055, 0x80000056, 0x80000057, + 0x80000058, 0x80000059, 0x8000005a, 0x80000061, + 0x80000062, 0x80000063, 0x80000064, 0x80000065, + 0x80000066, 0x80000067, 0x80000068, 0x80000069, + 0x8000006a, 0x8000006b, 0x8000006c, 0x8000006d, + 0x8000006e, 0x8000006f, 0x80000070, 0x80000071, + 0x80000072, 0x80000073, 0x80000074, 0x80000075, + 0x80000076, 0x80000077, 0x80000078, 0x80000079, + 0x8000007a, 0x80000030, 0x80006bcd, 0x80009f9f, + 0x80004e00, 0x80004e28, 0x80004e36, 0x80004e3f, + 0x80004e59, 0x80004e85, 0x80004e8c, 0x80004ea0, + 0x80004eba, 0x8000513f, 0x80005165, 0x8000516b, + 0x80005182, 0x80005196, 0x800051ab, 0x800051e0, + 0x800051f5, 0x80005200, 0x8000529b, 0x800052f9, + 0x80005315, 0x8000531a, 0x80005338, 0x80005341, + 0x8000535c, 0x80005369, 0x80005382, 0x800053b6, + 0x800053c8, 0x800053e3, 0x800056d7, 0x8000571f, + 0x800058eb, 0x80005902, 0x8000590a, 0x80005915, + 0x80005927, 0x80005973, 0x80005b50, 0x80005b80, + 0x80005bf8, 0x80005c0f, 0x80005c22, 0x80005c38, + 0x80005c6e, 0x80005c71, 0x80005ddb, 0x80005de5, + 0x80005df1, 0x80005dfe, 0x80005e72, 0x80005e7a, + 0x80005e7f, 0x80005ef4, 0x80005efe, 0x80005f0b, + 0x80005f13, 0x80005f50, 0x80005f61, 0x80005f73, + 0x80005fc3, 0x80006208, 0x80006236, 0x8000624b, + 0x8000652f, 0x80006534, 0x80006587, 0x80006597, + 0x800065a4, 0x800065b9, 0x800065e0, 0x800065e5, + 0x800066f0, 0x80006708, 0x80006728, 0x80006b20, + 0x80006b62, 0x80006b79, 0x80006bb3, 0x80006bcb, + 0x80006bd4, 0x80006bdb, 0x80006c0f, 0x80006c14, + 0x80006c34, 0x8000706b, 0x8000722a, 0x80007236, + 0x8000723b, 0x8000723f, 0x80007247, 0x80007259, + 0x8000725b, 0x800072ac, 0x80007384, 0x80007389, + 0x800074dc, 0x800074e6, 0x80007518, 0x8000751f, + 0x80007528, 0x80007530, 0x8000758b, 0x80007592, + 0x80007676, 0x8000767d, 0x800076ae, 0x800076bf, + 0x800076ee, 0x800077db, 0x800077e2, 0x800077f3, + 0x8000793a, 0x800079b8, 0x800079be, 0x80007a74, + 0x80007acb, 0x80007af9, 0x80007c73, 0x80007cf8, + 0x80007f36, 0x80007f51, 0x80007f8a, 0x80007fbd, + 0x80008001, 0x8000800c, 0x80008012, 0x80008033, + 0x8000807f, 0x80008089, 0x800081e3, 0x800081ea, + 0x800081f3, 0x800081fc, 0x8000820c, 0x8000821b, + 0x8000821f, 0x8000826e, 0x80008272, 0x80008278, + 0x8000864d, 0x8000866b, 0x80008840, 0x8000884c, + 0x80008863, 0x8000897e, 0x8000898b, 0x800089d2, + 0x80008a00, 0x80008c37, 0x80008c46, 0x80008c55, + 0x80008c78, 0x80008c9d, 0x80008d64, 0x80008d70, + 0x80008db3, 0x80008eab, 0x80008eca, 0x80008f9b, + 0x80008fb0, 0x80008fb5, 0x80009091, 0x80009149, + 0x800091c6, 0x800091cc, 0x800091d1, 0x80009577, + 0x80009580, 0x8000961c, 0x800096b6, 0x800096b9, + 0x800096e8, 0x80009751, 0x8000975e, 0x80009762, + 0x80009769, 0x800097cb, 0x800097ed, 0x800097f3, + 0x80009801, 0x800098a8, 0x800098db, 0x800098df, + 0x80009996, 0x80009999, 0x800099ac, 0x80009aa8, + 0x80009ad8, 0x80009adf, 0x80009b25, 0x80009b2f, + 0x80009b32, 0x80009b3c, 0x80009b5a, 0x80009ce5, + 0x80009e75, 0x80009e7f, 0x80009ea5, 0x80009ebb, + 0x80009ec3, 0x80009ecd, 0x80009ed1, 0x80009ef9, + 0x80009efd, 0x80009f0e, 0x80009f13, 0x80009f20, + 0x80009f3b, 0x80009f4a, 0x80009f52, 0x80009f8d, + 0x80009f9c, 0x80009fa0, 0x80000020, 0x80003012, + 0x80005341, 0x80005344, 0x80005345, 0x0000304b, + 0x80003099, 0x0000304d, 0x80003099, 0x0000304f, + 0x80003099, 0x00003051, 0x80003099, 0x00003053, + 0x80003099, 0x00003055, 0x80003099, 0x00003057, + 0x80003099, 0x00003059, 0x80003099, 0x0000305b, + 0x80003099, 0x0000305d, 0x80003099, 0x0000305f, + 0x80003099, 0x00003061, 0x80003099, 0x00003064, + 0x80003099, 0x00003066, 0x80003099, 0x00003068, + 0x80003099, 0x0000306f, 0x80003099, 0x0000306f, + 0x8000309a, 0x00003072, 0x80003099, 0x00003072, + 0x8000309a, 0x00003075, 0x80003099, 0x00003075, + 0x8000309a, 0x00003078, 0x80003099, 0x00003078, + 0x8000309a, 0x0000307b, 0x80003099, 0x0000307b, + 0x8000309a, 0x00003046, 0x80003099, 0x00000020, + 0x80003099, 0x00000020, 0x8000309a, 0x0000309d, + 0x80003099, 0x000030ab, 0x80003099, 0x000030ad, + 0x80003099, 0x000030af, 0x80003099, 0x000030b1, + 0x80003099, 0x000030b3, 0x80003099, 0x000030b5, + 0x80003099, 0x000030b7, 0x80003099, 0x000030b9, + 0x80003099, 0x000030bb, 0x80003099, 0x000030bd, + 0x80003099, 0x000030bf, 0x80003099, 0x000030c1, + 0x80003099, 0x000030c4, 0x80003099, 0x000030c6, + 0x80003099, 0x000030c8, 0x80003099, 0x000030cf, + 0x80003099, 0x000030cf, 0x8000309a, 0x000030d2, + 0x80003099, 0x000030d2, 0x8000309a, 0x000030d5, + 0x80003099, 0x000030d5, 0x8000309a, 0x000030d8, + 0x80003099, 0x000030d8, 0x8000309a, 0x000030db, + 0x80003099, 0x000030db, 0x8000309a, 0x000030a6, + 0x80003099, 0x000030ef, 0x80003099, 0x000030f0, + 0x80003099, 0x000030f1, 0x80003099, 0x000030f2, + 0x80003099, 0x000030fd, 0x80003099, 0x80001100, + 0x80001101, 0x800011aa, 0x80001102, 0x800011ac, + 0x800011ad, 0x80001103, 0x80001104, 0x80001105, + 0x800011b0, 0x800011b1, 0x800011b2, 0x800011b3, + 0x800011b4, 0x800011b5, 0x8000111a, 0x80001106, + 0x80001107, 0x80001108, 0x80001121, 0x80001109, + 0x8000110a, 0x8000110b, 0x8000110c, 0x8000110d, + 0x8000110e, 0x8000110f, 0x80001110, 0x80001111, + 0x80001112, 0x80001161, 0x80001162, 0x80001163, + 0x80001164, 0x80001165, 0x80001166, 0x80001167, + 0x80001168, 0x80001169, 0x8000116a, 0x8000116b, + 0x8000116c, 0x8000116d, 0x8000116e, 0x8000116f, + 0x80001170, 0x80001171, 0x80001172, 0x80001173, + 0x80001174, 0x80001175, 0x80001160, 0x80001114, + 0x80001115, 0x800011c7, 0x800011c8, 0x800011cc, + 0x800011ce, 0x800011d3, 0x800011d7, 0x800011d9, + 0x8000111c, 0x800011dd, 0x800011df, 0x8000111d, + 0x8000111e, 0x80001120, 0x80001122, 0x80001123, + 0x80001127, 0x80001129, 0x8000112b, 0x8000112c, + 0x8000112d, 0x8000112e, 0x8000112f, 0x80001132, + 0x80001136, 0x80001140, 0x80001147, 0x8000114c, + 0x800011f1, 0x800011f2, 0x80001157, 0x80001158, + 0x80001159, 0x80001184, 0x80001185, 0x80001188, + 0x80001191, 0x80001192, 0x80001194, 0x8000119e, + 0x800011a1, 0x80004e00, 0x80004e8c, 0x80004e09, + 0x800056db, 0x80004e0a, 0x80004e2d, 0x80004e0b, + 0x80007532, 0x80004e59, 0x80004e19, 0x80004e01, + 0x80005929, 0x80005730, 0x80004eba, 0x00000028, + 0x00001100, 0x80000029, 0x00000028, 0x00001102, + 0x80000029, 0x00000028, 0x00001103, 0x80000029, + 0x00000028, 0x00001105, 0x80000029, 0x00000028, + 0x00001106, 0x80000029, 0x00000028, 0x00001107, + 0x80000029, 0x00000028, 0x00001109, 0x80000029, + 0x00000028, 0x0000110b, 0x80000029, 0x00000028, + 0x0000110c, 0x80000029, 0x00000028, 0x0000110e, + 0x80000029, 0x00000028, 0x0000110f, 0x80000029, + 0x00000028, 0x00001110, 0x80000029, 0x00000028, + 0x00001111, 0x80000029, 0x00000028, 0x00001112, + 0x80000029, 0x00000028, 0x00001100, 0x00001161, + 0x80000029, 0x00000028, 0x00001102, 0x00001161, + 0x80000029, 0x00000028, 0x00001103, 0x00001161, + 0x80000029, 0x00000028, 0x00001105, 0x00001161, + 0x80000029, 0x00000028, 0x00001106, 0x00001161, + 0x80000029, 0x00000028, 0x00001107, 0x00001161, + 0x80000029, 0x00000028, 0x00001109, 0x00001161, + 0x80000029, 0x00000028, 0x0000110b, 0x00001161, + 0x80000029, 0x00000028, 0x0000110c, 0x00001161, + 0x80000029, 0x00000028, 0x0000110e, 0x00001161, + 0x80000029, 0x00000028, 0x0000110f, 0x00001161, + 0x80000029, 0x00000028, 0x00001110, 0x00001161, + 0x80000029, 0x00000028, 0x00001111, 0x00001161, + 0x80000029, 0x00000028, 0x00001112, 0x00001161, + 0x80000029, 0x00000028, 0x0000110c, 0x0000116e, + 0x80000029, 0x00000028, 0x00004e00, 0x80000029, + 0x00000028, 0x00004e8c, 0x80000029, 0x00000028, + 0x00004e09, 0x80000029, 0x00000028, 0x000056db, + 0x80000029, 0x00000028, 0x00004e94, 0x80000029, + 0x00000028, 0x0000516d, 0x80000029, 0x00000028, + 0x00004e03, 0x80000029, 0x00000028, 0x0000516b, + 0x80000029, 0x00000028, 0x00004e5d, 0x80000029, + 0x00000028, 0x00005341, 0x80000029, 0x00000028, + 0x00006708, 0x80000029, 0x00000028, 0x0000706b, + 0x80000029, 0x00000028, 0x00006c34, 0x80000029, + 0x00000028, 0x00006728, 0x80000029, 0x00000028, + 0x000091d1, 0x80000029, 0x00000028, 0x0000571f, + 0x80000029, 0x00000028, 0x000065e5, 0x80000029, + 0x00000028, 0x0000682a, 0x80000029, 0x00000028, + 0x00006709, 0x80000029, 0x00000028, 0x0000793e, + 0x80000029, 0x00000028, 0x0000540d, 0x80000029, + 0x00000028, 0x00007279, 0x80000029, 0x00000028, + 0x00008ca1, 0x80000029, 0x00000028, 0x0000795d, + 0x80000029, 0x00000028, 0x000052b4, 0x80000029, + 0x00000028, 0x00004ee3, 0x80000029, 0x00000028, + 0x0000547c, 0x80000029, 0x00000028, 0x00005b66, + 0x80000029, 0x00000028, 0x000076e3, 0x80000029, + 0x00000028, 0x00004f01, 0x80000029, 0x00000028, + 0x00008cc7, 0x80000029, 0x00000028, 0x00005354, + 0x80000029, 0x00000028, 0x0000796d, 0x80000029, + 0x00000028, 0x00004f11, 0x80000029, 0x00000028, + 0x000081ea, 0x80000029, 0x00000028, 0x000081f3, + 0x80000029, 0x80001100, 0x80001102, 0x80001103, + 0x80001105, 0x80001106, 0x80001107, 0x80001109, + 0x8000110b, 0x8000110c, 0x8000110e, 0x8000110f, + 0x80001110, 0x80001111, 0x80001112, 0x00001100, + 0x80001161, 0x00001102, 0x80001161, 0x00001103, + 0x80001161, 0x00001105, 0x80001161, 0x00001106, + 0x80001161, 0x00001107, 0x80001161, 0x00001109, + 0x80001161, 0x0000110b, 0x80001161, 0x0000110c, + 0x80001161, 0x0000110e, 0x80001161, 0x0000110f, + 0x80001161, 0x00001110, 0x80001161, 0x00001111, + 0x80001161, 0x00001112, 0x80001161, 0x80004e00, + 0x80004e8c, 0x80004e09, 0x800056db, 0x80004e94, + 0x8000516d, 0x80004e03, 0x8000516b, 0x80004e5d, + 0x80005341, 0x80006708, 0x8000706b, 0x80006c34, + 0x80006728, 0x800091d1, 0x8000571f, 0x800065e5, + 0x8000682a, 0x80006709, 0x8000793e, 0x8000540d, + 0x80007279, 0x80008ca1, 0x8000795d, 0x800052b4, + 0x800079d8, 0x80007537, 0x80005973, 0x80009069, + 0x8000512a, 0x80005370, 0x80006ce8, 0x80009805, + 0x80004f11, 0x80005199, 0x80006b63, 0x80004e0a, + 0x80004e2d, 0x80004e0b, 0x80005de6, 0x800053f3, + 0x8000533b, 0x80005b97, 0x80005b66, 0x800076e3, + 0x80004f01, 0x80008cc7, 0x80005354, 0x8000591c, + 0x00000031, 0x80006708, 0x00000032, 0x80006708, + 0x00000033, 0x80006708, 0x00000034, 0x80006708, + 0x00000035, 0x80006708, 0x00000036, 0x80006708, + 0x00000037, 0x80006708, 0x00000038, 0x80006708, + 0x00000039, 0x80006708, 0x00000031, 0x00000030, + 0x80006708, 0x00000031, 0x00000031, 0x80006708, + 0x00000031, 0x00000032, 0x80006708, 0x800030a2, + 0x800030a4, 0x800030a6, 0x800030a8, 0x800030aa, + 0x800030ab, 0x800030ad, 0x800030af, 0x800030b1, + 0x800030b3, 0x800030b5, 0x800030b7, 0x800030b9, + 0x800030bb, 0x800030bd, 0x800030bf, 0x800030c1, + 0x800030c4, 0x800030c6, 0x800030c8, 0x800030ca, + 0x800030cb, 0x800030cc, 0x800030cd, 0x800030ce, + 0x800030cf, 0x800030d2, 0x800030d5, 0x800030d8, + 0x800030db, 0x800030de, 0x800030df, 0x800030e0, + 0x800030e1, 0x800030e2, 0x800030e4, 0x800030e6, + 0x800030e8, 0x800030e9, 0x800030ea, 0x800030eb, + 0x800030ec, 0x800030ed, 0x800030ef, 0x800030f0, + 0x800030f1, 0x800030f2, 0x000030a2, 0x000030d1, + 0x000030fc, 0x800030c8, 0x000030a2, 0x000030eb, + 0x000030d5, 0x800030a1, 0x000030a2, 0x000030f3, + 0x000030da, 0x800030a2, 0x000030a2, 0x000030fc, + 0x800030eb, 0x000030a4, 0x000030cb, 0x000030f3, + 0x800030b0, 0x000030a4, 0x000030f3, 0x800030c1, + 0x000030a6, 0x000030a9, 0x800030f3, 0x000030a8, + 0x000030b9, 0x000030af, 0x000030fc, 0x800030c9, + 0x000030a8, 0x000030fc, 0x000030ab, 0x800030fc, + 0x000030aa, 0x000030f3, 0x800030b9, 0x000030aa, + 0x000030fc, 0x800030e0, 0x000030ab, 0x000030a4, + 0x800030ea, 0x000030ab, 0x000030e9, 0x000030c3, + 0x800030c8, 0x000030ab, 0x000030ed, 0x000030ea, + 0x800030fc, 0x000030ac, 0x000030ed, 0x800030f3, + 0x000030ac, 0x000030f3, 0x800030de, 0x000030ae, + 0x800030ac, 0x000030ae, 0x000030cb, 0x800030fc, + 0x000030ad, 0x000030e5, 0x000030ea, 0x800030fc, + 0x000030ae, 0x000030eb, 0x000030c0, 0x800030fc, + 0x000030ad, 0x800030ed, 0x000030ad, 0x000030ed, + 0x000030b0, 0x000030e9, 0x800030e0, 0x000030ad, + 0x000030ed, 0x000030e1, 0x000030fc, 0x000030c8, + 0x800030eb, 0x000030ad, 0x000030ed, 0x000030ef, + 0x000030c3, 0x800030c8, 0x000030b0, 0x000030e9, + 0x800030e0, 0x000030b0, 0x000030e9, 0x000030e0, + 0x000030c8, 0x800030f3, 0x000030af, 0x000030eb, + 0x000030bc, 0x000030a4, 0x800030ed, 0x000030af, + 0x000030ed, 0x000030fc, 0x800030cd, 0x000030b1, + 0x000030fc, 0x800030b9, 0x000030b3, 0x000030eb, + 0x800030ca, 0x000030b3, 0x000030fc, 0x800030dd, + 0x000030b5, 0x000030a4, 0x000030af, 0x800030eb, + 0x000030b5, 0x000030f3, 0x000030c1, 0x000030fc, + 0x800030e0, 0x000030b7, 0x000030ea, 0x000030f3, + 0x800030b0, 0x000030bb, 0x000030f3, 0x800030c1, + 0x000030bb, 0x000030f3, 0x800030c8, 0x000030c0, + 0x000030fc, 0x800030b9, 0x000030c7, 0x800030b7, + 0x000030c9, 0x800030eb, 0x000030c8, 0x800030f3, + 0x000030ca, 0x800030ce, 0x000030ce, 0x000030c3, + 0x800030c8, 0x000030cf, 0x000030a4, 0x800030c4, + 0x000030d1, 0x000030fc, 0x000030bb, 0x000030f3, + 0x800030c8, 0x000030d1, 0x000030fc, 0x800030c4, + 0x000030d0, 0x000030fc, 0x000030ec, 0x800030eb, + 0x000030d4, 0x000030a2, 0x000030b9, 0x000030c8, + 0x800030eb, 0x000030d4, 0x000030af, 0x800030eb, + 0x000030d4, 0x800030b3, 0x000030d3, 0x800030eb, + 0x000030d5, 0x000030a1, 0x000030e9, 0x000030c3, + 0x800030c9, 0x000030d5, 0x000030a3, 0x000030fc, + 0x800030c8, 0x000030d6, 0x000030c3, 0x000030b7, + 0x000030a7, 0x800030eb, 0x000030d5, 0x000030e9, + 0x800030f3, 0x000030d8, 0x000030af, 0x000030bf, + 0x000030fc, 0x800030eb, 0x000030da, 0x800030bd, + 0x000030da, 0x000030cb, 0x800030d2, 0x000030d8, + 0x000030eb, 0x800030c4, 0x000030da, 0x000030f3, + 0x800030b9, 0x000030da, 0x000030fc, 0x800030b8, + 0x000030d9, 0x000030fc, 0x800030bf, 0x000030dd, + 0x000030a4, 0x000030f3, 0x800030c8, 0x000030dc, + 0x000030eb, 0x800030c8, 0x000030db, 0x800030f3, + 0x000030dd, 0x000030f3, 0x800030c9, 0x000030db, + 0x000030fc, 0x800030eb, 0x000030db, 0x000030fc, + 0x800030f3, 0x000030de, 0x000030a4, 0x000030af, + 0x800030ed, 0x000030de, 0x000030a4, 0x800030eb, + 0x000030de, 0x000030c3, 0x800030cf, 0x000030de, + 0x000030eb, 0x800030af, 0x000030de, 0x000030f3, + 0x000030b7, 0x000030e7, 0x800030f3, 0x000030df, + 0x000030af, 0x000030ed, 0x800030f3, 0x000030df, + 0x800030ea, 0x000030df, 0x000030ea, 0x000030d0, + 0x000030fc, 0x800030eb, 0x000030e1, 0x800030ac, + 0x000030e1, 0x000030ac, 0x000030c8, 0x800030f3, + 0x000030e1, 0x000030fc, 0x000030c8, 0x800030eb, + 0x000030e4, 0x000030fc, 0x800030c9, 0x000030e4, + 0x000030fc, 0x800030eb, 0x000030e6, 0x000030a2, + 0x800030f3, 0x000030ea, 0x000030c3, 0x000030c8, + 0x800030eb, 0x000030ea, 0x800030e9, 0x000030eb, + 0x000030d4, 0x800030fc, 0x000030eb, 0x000030fc, + 0x000030d6, 0x800030eb, 0x000030ec, 0x800030e0, + 0x000030ec, 0x000030f3, 0x000030c8, 0x000030b2, + 0x800030f3, 0x000030ef, 0x000030c3, 0x800030c8, + 0x00000030, 0x800070b9, 0x00000031, 0x800070b9, + 0x00000032, 0x800070b9, 0x00000033, 0x800070b9, + 0x00000034, 0x800070b9, 0x00000035, 0x800070b9, + 0x00000036, 0x800070b9, 0x00000037, 0x800070b9, + 0x00000038, 0x800070b9, 0x00000039, 0x800070b9, + 0x00000031, 0x00000030, 0x800070b9, 0x00000031, + 0x00000031, 0x800070b9, 0x00000031, 0x00000032, + 0x800070b9, 0x00000031, 0x00000033, 0x800070b9, + 0x00000031, 0x00000034, 0x800070b9, 0x00000031, + 0x00000035, 0x800070b9, 0x00000031, 0x00000036, + 0x800070b9, 0x00000031, 0x00000037, 0x800070b9, + 0x00000031, 0x00000038, 0x800070b9, 0x00000031, + 0x00000039, 0x800070b9, 0x00000032, 0x00000030, + 0x800070b9, 0x00000032, 0x00000031, 0x800070b9, + 0x00000032, 0x00000032, 0x800070b9, 0x00000032, + 0x00000033, 0x800070b9, 0x00000032, 0x00000034, + 0x800070b9, 0x00000068, 0x00000050, 0x80000061, + 0x00000064, 0x80000061, 0x00000041, 0x80000055, + 0x00000062, 0x00000061, 0x80000072, 0x0000006f, + 0x80000056, 0x00000070, 0x80000063, 0x00005e73, + 0x80006210, 0x0000662d, 0x8000548c, 0x00005927, + 0x80006b63, 0x0000660e, 0x80006cbb, 0x0000682a, + 0x00005f0f, 0x00004f1a, 0x8000793e, 0x00000070, + 0x80000041, 0x0000006e, 0x80000041, 0x000003bc, + 0x80000041, 0x0000006d, 0x80000041, 0x0000006b, + 0x80000041, 0x0000004b, 0x80000042, 0x0000004d, + 0x80000042, 0x00000047, 0x80000042, 0x00000063, + 0x00000061, 0x8000006c, 0x0000006b, 0x00000063, + 0x00000061, 0x8000006c, 0x00000070, 0x80000046, + 0x0000006e, 0x80000046, 0x000003bc, 0x80000046, + 0x000003bc, 0x80000067, 0x0000006d, 0x80000067, + 0x0000006b, 0x80000067, 0x00000048, 0x8000007a, + 0x0000006b, 0x00000048, 0x8000007a, 0x0000004d, + 0x00000048, 0x8000007a, 0x00000047, 0x00000048, + 0x8000007a, 0x00000054, 0x00000048, 0x8000007a, + 0x000003bc, 0x80002113, 0x0000006d, 0x80002113, + 0x00000064, 0x80002113, 0x0000006b, 0x80002113, + 0x00000066, 0x8000006d, 0x0000006e, 0x8000006d, + 0x000003bc, 0x8000006d, 0x0000006d, 0x8000006d, + 0x00000063, 0x8000006d, 0x0000006b, 0x8000006d, + 0x0000006d, 0x0000006d, 0x800000b2, 0x00000063, + 0x0000006d, 0x800000b2, 0x0000006d, 0x800000b2, + 0x0000006b, 0x0000006d, 0x800000b2, 0x0000006d, + 0x0000006d, 0x800000b3, 0x00000063, 0x0000006d, + 0x800000b3, 0x0000006d, 0x800000b3, 0x0000006b, + 0x0000006d, 0x800000b3, 0x0000006d, 0x00002215, + 0x80000073, 0x0000006d, 0x00002215, 0x00000073, + 0x800000b2, 0x00000050, 0x80000061, 0x0000006b, + 0x00000050, 0x80000061, 0x0000004d, 0x00000050, + 0x80000061, 0x00000047, 0x00000050, 0x80000061, + 0x00000072, 0x00000061, 0x80000064, 0x00000072, + 0x00000061, 0x00000064, 0x00002215, 0x80000073, + 0x00000072, 0x00000061, 0x00000064, 0x00002215, + 0x00000073, 0x800000b2, 0x00000070, 0x80000073, + 0x0000006e, 0x80000073, 0x000003bc, 0x80000073, + 0x0000006d, 0x80000073, 0x00000070, 0x80000056, + 0x0000006e, 0x80000056, 0x000003bc, 0x80000056, + 0x0000006d, 0x80000056, 0x0000006b, 0x80000056, + 0x0000004d, 0x80000056, 0x00000070, 0x80000057, + 0x0000006e, 0x80000057, 0x000003bc, 0x80000057, + 0x0000006d, 0x80000057, 0x0000006b, 0x80000057, + 0x0000004d, 0x80000057, 0x0000006b, 0x800003a9, + 0x0000004d, 0x800003a9, 0x00000061, 0x0000002e, + 0x0000006d, 0x8000002e, 0x00000042, 0x80000071, + 0x00000063, 0x80000063, 0x00000063, 0x80000064, + 0x00000043, 0x00002215, 0x0000006b, 0x80000067, + 0x00000043, 0x0000006f, 0x8000002e, 0x00000064, + 0x80000042, 0x00000047, 0x80000079, 0x00000068, + 0x80000061, 0x00000048, 0x80000050, 0x00000069, + 0x8000006e, 0x0000004b, 0x8000004b, 0x0000004b, + 0x8000004d, 0x0000006b, 0x80000074, 0x0000006c, + 0x8000006d, 0x0000006c, 0x8000006e, 0x0000006c, + 0x0000006f, 0x80000067, 0x0000006c, 0x80000078, + 0x0000006d, 0x80000062, 0x0000006d, 0x00000069, + 0x8000006c, 0x0000006d, 0x0000006f, 0x8000006c, + 0x00000050, 0x80000048, 0x00000070, 0x0000002e, + 0x0000006d, 0x8000002e, 0x00000050, 0x00000050, + 0x8000004d, 0x00000050, 0x80000052, 0x00000073, + 0x80000072, 0x00000053, 0x80000076, 0x00000057, + 0x80000062, 0x00000031, 0x800065e5, 0x00000032, + 0x800065e5, 0x00000033, 0x800065e5, 0x00000034, + 0x800065e5, 0x00000035, 0x800065e5, 0x00000036, + 0x800065e5, 0x00000037, 0x800065e5, 0x00000038, + 0x800065e5, 0x00000039, 0x800065e5, 0x00000031, + 0x00000030, 0x800065e5, 0x00000031, 0x00000031, + 0x800065e5, 0x00000031, 0x00000032, 0x800065e5, + 0x00000031, 0x00000033, 0x800065e5, 0x00000031, + 0x00000034, 0x800065e5, 0x00000031, 0x00000035, + 0x800065e5, 0x00000031, 0x00000036, 0x800065e5, + 0x00000031, 0x00000037, 0x800065e5, 0x00000031, + 0x00000038, 0x800065e5, 0x00000031, 0x00000039, + 0x800065e5, 0x00000032, 0x00000030, 0x800065e5, + 0x00000032, 0x00000031, 0x800065e5, 0x00000032, + 0x00000032, 0x800065e5, 0x00000032, 0x00000033, + 0x800065e5, 0x00000032, 0x00000034, 0x800065e5, + 0x00000032, 0x00000035, 0x800065e5, 0x00000032, + 0x00000036, 0x800065e5, 0x00000032, 0x00000037, + 0x800065e5, 0x00000032, 0x00000038, 0x800065e5, + 0x00000032, 0x00000039, 0x800065e5, 0x00000033, + 0x00000030, 0x800065e5, 0x00000033, 0x00000031, + 0x800065e5, 0x80008c48, 0x800066f4, 0x80008eca, + 0x80008cc8, 0x80006ed1, 0x80004e32, 0x800053e5, + 0x80009f9c, 0x80009f9c, 0x80005951, 0x800091d1, + 0x80005587, 0x80005948, 0x800061f6, 0x80007669, + 0x80007f85, 0x8000863f, 0x800087ba, 0x800088f8, + 0x8000908f, 0x80006a02, 0x80006d1b, 0x800070d9, + 0x800073de, 0x8000843d, 0x8000916a, 0x800099f1, + 0x80004e82, 0x80005375, 0x80006b04, 0x8000721b, + 0x8000862d, 0x80009e1e, 0x80005d50, 0x80006feb, + 0x800085cd, 0x80008964, 0x800062c9, 0x800081d8, + 0x8000881f, 0x80005eca, 0x80006717, 0x80006d6a, + 0x800072fc, 0x800090ce, 0x80004f86, 0x800051b7, + 0x800052de, 0x800064c4, 0x80006ad3, 0x80007210, + 0x800076e7, 0x80008001, 0x80008606, 0x8000865c, + 0x80008def, 0x80009732, 0x80009b6f, 0x80009dfa, + 0x8000788c, 0x8000797f, 0x80007da0, 0x800083c9, + 0x80009304, 0x80009e7f, 0x80008ad6, 0x800058df, + 0x80005f04, 0x80007c60, 0x8000807e, 0x80007262, + 0x800078ca, 0x80008cc2, 0x800096f7, 0x800058d8, + 0x80005c62, 0x80006a13, 0x80006dda, 0x80006f0f, + 0x80007d2f, 0x80007e37, 0x800096fb, 0x800052d2, + 0x8000808b, 0x800051dc, 0x800051cc, 0x80007a1c, + 0x80007dbe, 0x800083f1, 0x80009675, 0x80008b80, + 0x800062cf, 0x80006a02, 0x80008afe, 0x80004e39, + 0x80005be7, 0x80006012, 0x80007387, 0x80007570, + 0x80005317, 0x800078fb, 0x80004fbf, 0x80005fa9, + 0x80004e0d, 0x80006ccc, 0x80006578, 0x80007d22, + 0x800053c3, 0x8000585e, 0x80007701, 0x80008449, + 0x80008aaa, 0x80006bba, 0x80008fb0, 0x80006c88, + 0x800062fe, 0x800082e5, 0x800063a0, 0x80007565, + 0x80004eae, 0x80005169, 0x800051c9, 0x80006881, + 0x80007ce7, 0x8000826f, 0x80008ad2, 0x800091cf, + 0x800052f5, 0x80005442, 0x80005973, 0x80005eec, + 0x800065c5, 0x80006ffe, 0x8000792a, 0x800095ad, + 0x80009a6a, 0x80009e97, 0x80009ece, 0x8000529b, + 0x800066c6, 0x80006b77, 0x80008f62, 0x80005e74, + 0x80006190, 0x80006200, 0x8000649a, 0x80006f23, + 0x80007149, 0x80007489, 0x800079ca, 0x80007df4, + 0x8000806f, 0x80008f26, 0x800084ee, 0x80009023, + 0x8000934a, 0x80005217, 0x800052a3, 0x800054bd, + 0x800070c8, 0x800088c2, 0x80008aaa, 0x80005ec9, + 0x80005ff5, 0x8000637b, 0x80006bae, 0x80007c3e, + 0x80007375, 0x80004ee4, 0x800056f9, 0x80005be7, + 0x80005dba, 0x8000601c, 0x800073b2, 0x80007469, + 0x80007f9a, 0x80008046, 0x80009234, 0x800096f6, + 0x80009748, 0x80009818, 0x80004f8b, 0x800079ae, + 0x800091b4, 0x800096b8, 0x800060e1, 0x80004e86, + 0x800050da, 0x80005bee, 0x80005c3f, 0x80006599, + 0x80006a02, 0x800071ce, 0x80007642, 0x800084fc, + 0x8000907c, 0x80009f8d, 0x80006688, 0x8000962e, + 0x80005289, 0x8000677b, 0x800067f3, 0x80006d41, + 0x80006e9c, 0x80007409, 0x80007559, 0x8000786b, + 0x80007d10, 0x8000985e, 0x8000516d, 0x8000622e, + 0x80009678, 0x8000502b, 0x80005d19, 0x80006dea, + 0x80008f2a, 0x80005f8b, 0x80006144, 0x80006817, + 0x80007387, 0x80009686, 0x80005229, 0x8000540f, + 0x80005c65, 0x80006613, 0x8000674e, 0x800068a8, + 0x80006ce5, 0x80007406, 0x800075e2, 0x80007f79, + 0x800088cf, 0x800088e1, 0x800091cc, 0x800096e2, + 0x8000533f, 0x80006eba, 0x8000541d, 0x800071d0, + 0x80007498, 0x800085fa, 0x800096a3, 0x80009c57, + 0x80009e9f, 0x80006797, 0x80006dcb, 0x800081e8, + 0x80007acb, 0x80007b20, 0x80007c92, 0x800072c0, + 0x80007099, 0x80008b58, 0x80004ec0, 0x80008336, + 0x8000523a, 0x80005207, 0x80005ea6, 0x800062d3, + 0x80007cd6, 0x80005b85, 0x80006d1e, 0x800066b4, + 0x80008f3b, 0x8000884c, 0x8000964d, 0x8000898b, + 0x80005ed3, 0x80005140, 0x800055c0, 0x8000585a, + 0x80006674, 0x800051de, 0x8000732a, 0x800076ca, + 0x8000793c, 0x8000795e, 0x80007965, 0x8000798f, + 0x80009756, 0x80007cbe, 0x80007fbd, 0x80008612, + 0x80008af8, 0x80009038, 0x800090fd, 0x800098ef, + 0x800098fc, 0x80009928, 0x80009db4, 0x00000066, + 0x80000066, 0x00000066, 0x80000069, 0x00000066, + 0x8000006c, 0x00000066, 0x00000066, 0x80000069, + 0x00000066, 0x00000066, 0x8000006c, 0x0000017f, + 0x80000074, 0x00000073, 0x80000074, 0x00000574, + 0x80000576, 0x00000574, 0x80000565, 0x00000574, + 0x8000056b, 0x0000057e, 0x80000576, 0x00000574, + 0x8000056d, 0x000005d9, 0x800005b4, 0x000005f2, + 0x800005b7, 0x800005e2, 0x800005d0, 0x800005d3, + 0x800005d4, 0x800005db, 0x800005dc, 0x800005dd, + 0x800005e8, 0x800005ea, 0x8000002b, 0x000005e9, + 0x800005c1, 0x000005e9, 0x800005c2, 0x0000fb49, + 0x800005c1, 0x0000fb49, 0x800005c2, 0x000005d0, + 0x800005b7, 0x000005d0, 0x800005b8, 0x000005d0, + 0x800005bc, 0x000005d1, 0x800005bc, 0x000005d2, + 0x800005bc, 0x000005d3, 0x800005bc, 0x000005d4, + 0x800005bc, 0x000005d5, 0x800005bc, 0x000005d6, + 0x800005bc, 0x000005d8, 0x800005bc, 0x000005d9, + 0x800005bc, 0x000005da, 0x800005bc, 0x000005db, + 0x800005bc, 0x000005dc, 0x800005bc, 0x000005de, + 0x800005bc, 0x000005e0, 0x800005bc, 0x000005e1, + 0x800005bc, 0x000005e3, 0x800005bc, 0x000005e4, + 0x800005bc, 0x000005e6, 0x800005bc, 0x000005e7, + 0x800005bc, 0x000005e8, 0x800005bc, 0x000005e9, + 0x800005bc, 0x000005ea, 0x800005bc, 0x000005d5, + 0x800005b9, 0x000005d1, 0x800005bf, 0x000005db, + 0x800005bf, 0x000005e4, 0x800005bf, 0x000005d0, + 0x800005dc, 0x80000671, 0x80000671, 0x8000067b, + 0x8000067b, 0x8000067b, 0x8000067b, 0x8000067e, + 0x8000067e, 0x8000067e, 0x8000067e, 0x80000680, + 0x80000680, 0x80000680, 0x80000680, 0x8000067a, + 0x8000067a, 0x8000067a, 0x8000067a, 0x8000067f, + 0x8000067f, 0x8000067f, 0x8000067f, 0x80000679, + 0x80000679, 0x80000679, 0x80000679, 0x800006a4, + 0x800006a4, 0x800006a4, 0x800006a4, 0x800006a6, + 0x800006a6, 0x800006a6, 0x800006a6, 0x80000684, + 0x80000684, 0x80000684, 0x80000684, 0x80000683, + 0x80000683, 0x80000683, 0x80000683, 0x80000686, + 0x80000686, 0x80000686, 0x80000686, 0x80000687, + 0x80000687, 0x80000687, 0x80000687, 0x8000068d, + 0x8000068d, 0x8000068c, 0x8000068c, 0x8000068e, + 0x8000068e, 0x80000688, 0x80000688, 0x80000698, + 0x80000698, 0x80000691, 0x80000691, 0x800006a9, + 0x800006a9, 0x800006a9, 0x800006a9, 0x800006af, + 0x800006af, 0x800006af, 0x800006af, 0x800006b3, + 0x800006b3, 0x800006b3, 0x800006b3, 0x800006b1, + 0x800006b1, 0x800006b1, 0x800006b1, 0x800006ba, + 0x800006ba, 0x800006bb, 0x800006bb, 0x800006bb, + 0x800006bb, 0x800006c0, 0x800006c0, 0x800006c1, + 0x800006c1, 0x800006c1, 0x800006c1, 0x800006be, + 0x800006be, 0x800006be, 0x800006be, 0x800006d2, + 0x800006d2, 0x800006d3, 0x800006d3, 0x800006ad, + 0x800006ad, 0x800006ad, 0x800006ad, 0x800006c7, + 0x800006c7, 0x800006c6, 0x800006c6, 0x800006c8, + 0x800006c8, 0x80000677, 0x800006cb, 0x800006cb, + 0x800006c5, 0x800006c5, 0x800006c9, 0x800006c9, + 0x800006d0, 0x800006d0, 0x800006d0, 0x800006d0, + 0x80000649, 0x80000649, 0x00000626, 0x80000627, + 0x00000626, 0x80000627, 0x00000626, 0x800006d5, + 0x00000626, 0x800006d5, 0x00000626, 0x80000648, + 0x00000626, 0x80000648, 0x00000626, 0x800006c7, + 0x00000626, 0x800006c7, 0x00000626, 0x800006c6, + 0x00000626, 0x800006c6, 0x00000626, 0x800006c8, + 0x00000626, 0x800006c8, 0x00000626, 0x800006d0, + 0x00000626, 0x800006d0, 0x00000626, 0x800006d0, + 0x00000626, 0x80000649, 0x00000626, 0x80000649, + 0x00000626, 0x80000649, 0x800006cc, 0x800006cc, + 0x800006cc, 0x800006cc, 0x00000626, 0x8000062c, + 0x00000626, 0x8000062d, 0x00000626, 0x80000645, + 0x00000626, 0x80000649, 0x00000626, 0x8000064a, + 0x00000628, 0x8000062c, 0x00000628, 0x8000062d, + 0x00000628, 0x8000062e, 0x00000628, 0x80000645, + 0x00000628, 0x80000649, 0x00000628, 0x8000064a, + 0x0000062a, 0x8000062c, 0x0000062a, 0x8000062d, + 0x0000062a, 0x8000062e, 0x0000062a, 0x80000645, + 0x0000062a, 0x80000649, 0x0000062a, 0x8000064a, + 0x0000062b, 0x8000062c, 0x0000062b, 0x80000645, + 0x0000062b, 0x80000649, 0x0000062b, 0x8000064a, + 0x0000062c, 0x8000062d, 0x0000062c, 0x80000645, + 0x0000062d, 0x8000062c, 0x0000062d, 0x80000645, + 0x0000062e, 0x8000062c, 0x0000062e, 0x8000062d, + 0x0000062e, 0x80000645, 0x00000633, 0x8000062c, + 0x00000633, 0x8000062d, 0x00000633, 0x8000062e, + 0x00000633, 0x80000645, 0x00000635, 0x8000062d, + 0x00000635, 0x80000645, 0x00000636, 0x8000062c, + 0x00000636, 0x8000062d, 0x00000636, 0x8000062e, + 0x00000636, 0x80000645, 0x00000637, 0x8000062d, + 0x00000637, 0x80000645, 0x00000638, 0x80000645, + 0x00000639, 0x8000062c, 0x00000639, 0x80000645, + 0x0000063a, 0x8000062c, 0x0000063a, 0x80000645, + 0x00000641, 0x8000062c, 0x00000641, 0x8000062d, + 0x00000641, 0x8000062e, 0x00000641, 0x80000645, + 0x00000641, 0x80000649, 0x00000641, 0x8000064a, + 0x00000642, 0x8000062d, 0x00000642, 0x80000645, + 0x00000642, 0x80000649, 0x00000642, 0x8000064a, + 0x00000643, 0x80000627, 0x00000643, 0x8000062c, + 0x00000643, 0x8000062d, 0x00000643, 0x8000062e, + 0x00000643, 0x80000644, 0x00000643, 0x80000645, + 0x00000643, 0x80000649, 0x00000643, 0x8000064a, + 0x00000644, 0x8000062c, 0x00000644, 0x8000062d, + 0x00000644, 0x8000062e, 0x00000644, 0x80000645, + 0x00000644, 0x80000649, 0x00000644, 0x8000064a, + 0x00000645, 0x8000062c, 0x00000645, 0x8000062d, + 0x00000645, 0x8000062e, 0x00000645, 0x80000645, + 0x00000645, 0x80000649, 0x00000645, 0x8000064a, + 0x00000646, 0x8000062c, 0x00000646, 0x8000062d, + 0x00000646, 0x8000062e, 0x00000646, 0x80000645, + 0x00000646, 0x80000649, 0x00000646, 0x8000064a, + 0x00000647, 0x8000062c, 0x00000647, 0x80000645, + 0x00000647, 0x80000649, 0x00000647, 0x8000064a, + 0x0000064a, 0x8000062c, 0x0000064a, 0x8000062d, + 0x0000064a, 0x8000062e, 0x0000064a, 0x80000645, + 0x0000064a, 0x80000649, 0x0000064a, 0x8000064a, + 0x00000630, 0x80000670, 0x00000631, 0x80000670, + 0x00000649, 0x80000670, 0x00000020, 0x0000064c, + 0x80000651, 0x00000020, 0x0000064d, 0x80000651, + 0x00000020, 0x0000064e, 0x80000651, 0x00000020, + 0x0000064f, 0x80000651, 0x00000020, 0x00000650, + 0x80000651, 0x00000020, 0x00000651, 0x80000670, + 0x00000626, 0x80000631, 0x00000626, 0x80000632, + 0x00000626, 0x80000645, 0x00000626, 0x80000646, + 0x00000626, 0x80000649, 0x00000626, 0x8000064a, + 0x00000628, 0x80000631, 0x00000628, 0x80000632, + 0x00000628, 0x80000645, 0x00000628, 0x80000646, + 0x00000628, 0x80000649, 0x00000628, 0x8000064a, + 0x0000062a, 0x80000631, 0x0000062a, 0x80000632, + 0x0000062a, 0x80000645, 0x0000062a, 0x80000646, + 0x0000062a, 0x80000649, 0x0000062a, 0x8000064a, + 0x0000062b, 0x80000631, 0x0000062b, 0x80000632, + 0x0000062b, 0x80000645, 0x0000062b, 0x80000646, + 0x0000062b, 0x80000649, 0x0000062b, 0x8000064a, + 0x00000641, 0x80000649, 0x00000641, 0x8000064a, + 0x00000642, 0x80000649, 0x00000642, 0x8000064a, + 0x00000643, 0x80000627, 0x00000643, 0x80000644, + 0x00000643, 0x80000645, 0x00000643, 0x80000649, + 0x00000643, 0x8000064a, 0x00000644, 0x80000645, + 0x00000644, 0x80000649, 0x00000644, 0x8000064a, + 0x00000645, 0x80000627, 0x00000645, 0x80000645, + 0x00000646, 0x80000631, 0x00000646, 0x80000632, + 0x00000646, 0x80000645, 0x00000646, 0x80000646, + 0x00000646, 0x80000649, 0x00000646, 0x8000064a, + 0x00000649, 0x80000670, 0x0000064a, 0x80000631, + 0x0000064a, 0x80000632, 0x0000064a, 0x80000645, + 0x0000064a, 0x80000646, 0x0000064a, 0x80000649, + 0x0000064a, 0x8000064a, 0x00000626, 0x8000062c, + 0x00000626, 0x8000062d, 0x00000626, 0x8000062e, + 0x00000626, 0x80000645, 0x00000626, 0x80000647, + 0x00000628, 0x8000062c, 0x00000628, 0x8000062d, + 0x00000628, 0x8000062e, 0x00000628, 0x80000645, + 0x00000628, 0x80000647, 0x0000062a, 0x8000062c, + 0x0000062a, 0x8000062d, 0x0000062a, 0x8000062e, + 0x0000062a, 0x80000645, 0x0000062a, 0x80000647, + 0x0000062b, 0x80000645, 0x0000062c, 0x8000062d, + 0x0000062c, 0x80000645, 0x0000062d, 0x8000062c, + 0x0000062d, 0x80000645, 0x0000062e, 0x8000062c, + 0x0000062e, 0x80000645, 0x00000633, 0x8000062c, + 0x00000633, 0x8000062d, 0x00000633, 0x8000062e, + 0x00000633, 0x80000645, 0x00000635, 0x8000062d, + 0x00000635, 0x8000062e, 0x00000635, 0x80000645, + 0x00000636, 0x8000062c, 0x00000636, 0x8000062d, + 0x00000636, 0x8000062e, 0x00000636, 0x80000645, + 0x00000637, 0x8000062d, 0x00000638, 0x80000645, + 0x00000639, 0x8000062c, 0x00000639, 0x80000645, + 0x0000063a, 0x8000062c, 0x0000063a, 0x80000645, + 0x00000641, 0x8000062c, 0x00000641, 0x8000062d, + 0x00000641, 0x8000062e, 0x00000641, 0x80000645, + 0x00000642, 0x8000062d, 0x00000642, 0x80000645, + 0x00000643, 0x8000062c, 0x00000643, 0x8000062d, + 0x00000643, 0x8000062e, 0x00000643, 0x80000644, + 0x00000643, 0x80000645, 0x00000644, 0x8000062c, + 0x00000644, 0x8000062d, 0x00000644, 0x8000062e, + 0x00000644, 0x80000645, 0x00000644, 0x80000647, + 0x00000645, 0x8000062c, 0x00000645, 0x8000062d, + 0x00000645, 0x8000062e, 0x00000645, 0x80000645, + 0x00000646, 0x8000062c, 0x00000646, 0x8000062d, + 0x00000646, 0x8000062e, 0x00000646, 0x80000645, + 0x00000646, 0x80000647, 0x00000647, 0x8000062c, + 0x00000647, 0x80000645, 0x00000647, 0x80000670, + 0x0000064a, 0x8000062c, 0x0000064a, 0x8000062d, + 0x0000064a, 0x8000062e, 0x0000064a, 0x80000645, + 0x0000064a, 0x80000647, 0x00000626, 0x80000645, + 0x00000626, 0x80000647, 0x00000628, 0x80000645, + 0x00000628, 0x80000647, 0x0000062a, 0x80000645, + 0x0000062a, 0x80000647, 0x0000062b, 0x80000645, + 0x0000062b, 0x80000647, 0x00000633, 0x80000645, + 0x00000633, 0x80000647, 0x00000634, 0x80000645, + 0x00000634, 0x80000647, 0x00000643, 0x80000644, + 0x00000643, 0x80000645, 0x00000644, 0x80000645, + 0x00000646, 0x80000645, 0x00000646, 0x80000647, + 0x0000064a, 0x80000645, 0x0000064a, 0x80000647, + 0x00000640, 0x0000064e, 0x80000651, 0x00000640, + 0x0000064f, 0x80000651, 0x00000640, 0x00000650, + 0x80000651, 0x00000637, 0x80000649, 0x00000637, + 0x8000064a, 0x00000639, 0x80000649, 0x00000639, + 0x8000064a, 0x0000063a, 0x80000649, 0x0000063a, + 0x8000064a, 0x00000633, 0x80000649, 0x00000633, + 0x8000064a, 0x00000634, 0x80000649, 0x00000634, + 0x8000064a, 0x0000062d, 0x80000649, 0x0000062d, + 0x8000064a, 0x0000062c, 0x80000649, 0x0000062c, + 0x8000064a, 0x0000062e, 0x80000649, 0x0000062e, + 0x8000064a, 0x00000635, 0x80000649, 0x00000635, + 0x8000064a, 0x00000636, 0x80000649, 0x00000636, + 0x8000064a, 0x00000634, 0x8000062c, 0x00000634, + 0x8000062d, 0x00000634, 0x8000062e, 0x00000634, + 0x80000645, 0x00000634, 0x80000631, 0x00000633, + 0x80000631, 0x00000635, 0x80000631, 0x00000636, + 0x80000631, 0x00000637, 0x80000649, 0x00000637, + 0x8000064a, 0x00000639, 0x80000649, 0x00000639, + 0x8000064a, 0x0000063a, 0x80000649, 0x0000063a, + 0x8000064a, 0x00000633, 0x80000649, 0x00000633, + 0x8000064a, 0x00000634, 0x80000649, 0x00000634, + 0x8000064a, 0x0000062d, 0x80000649, 0x0000062d, + 0x8000064a, 0x0000062c, 0x80000649, 0x0000062c, + 0x8000064a, 0x0000062e, 0x80000649, 0x0000062e, + 0x8000064a, 0x00000635, 0x80000649, 0x00000635, + 0x8000064a, 0x00000636, 0x80000649, 0x00000636, + 0x8000064a, 0x00000634, 0x8000062c, 0x00000634, + 0x8000062d, 0x00000634, 0x8000062e, 0x00000634, + 0x80000645, 0x00000634, 0x80000631, 0x00000633, + 0x80000631, 0x00000635, 0x80000631, 0x00000636, + 0x80000631, 0x00000634, 0x8000062c, 0x00000634, + 0x8000062d, 0x00000634, 0x8000062e, 0x00000634, + 0x80000645, 0x00000633, 0x80000647, 0x00000634, + 0x80000647, 0x00000637, 0x80000645, 0x00000633, + 0x8000062c, 0x00000633, 0x8000062d, 0x00000633, + 0x8000062e, 0x00000634, 0x8000062c, 0x00000634, + 0x8000062d, 0x00000634, 0x8000062e, 0x00000637, + 0x80000645, 0x00000638, 0x80000645, 0x00000627, + 0x8000064b, 0x00000627, 0x8000064b, 0x0000062a, + 0x0000062c, 0x80000645, 0x0000062a, 0x0000062d, + 0x8000062c, 0x0000062a, 0x0000062d, 0x8000062c, + 0x0000062a, 0x0000062d, 0x80000645, 0x0000062a, + 0x0000062e, 0x80000645, 0x0000062a, 0x00000645, + 0x8000062c, 0x0000062a, 0x00000645, 0x8000062d, + 0x0000062a, 0x00000645, 0x8000062e, 0x0000062c, + 0x00000645, 0x8000062d, 0x0000062c, 0x00000645, + 0x8000062d, 0x0000062d, 0x00000645, 0x8000064a, + 0x0000062d, 0x00000645, 0x80000649, 0x00000633, + 0x0000062d, 0x8000062c, 0x00000633, 0x0000062c, + 0x8000062d, 0x00000633, 0x0000062c, 0x80000649, + 0x00000633, 0x00000645, 0x8000062d, 0x00000633, + 0x00000645, 0x8000062d, 0x00000633, 0x00000645, + 0x8000062c, 0x00000633, 0x00000645, 0x80000645, + 0x00000633, 0x00000645, 0x80000645, 0x00000635, + 0x0000062d, 0x8000062d, 0x00000635, 0x0000062d, + 0x8000062d, 0x00000635, 0x00000645, 0x80000645, + 0x00000634, 0x0000062d, 0x80000645, 0x00000634, + 0x0000062d, 0x80000645, 0x00000634, 0x0000062c, + 0x8000064a, 0x00000634, 0x00000645, 0x8000062e, + 0x00000634, 0x00000645, 0x8000062e, 0x00000634, + 0x00000645, 0x80000645, 0x00000634, 0x00000645, + 0x80000645, 0x00000636, 0x0000062d, 0x80000649, + 0x00000636, 0x0000062e, 0x80000645, 0x00000636, + 0x0000062e, 0x80000645, 0x00000637, 0x00000645, + 0x8000062d, 0x00000637, 0x00000645, 0x8000062d, + 0x00000637, 0x00000645, 0x80000645, 0x00000637, + 0x00000645, 0x8000064a, 0x00000639, 0x0000062c, + 0x80000645, 0x00000639, 0x00000645, 0x80000645, + 0x00000639, 0x00000645, 0x80000645, 0x00000639, + 0x00000645, 0x80000649, 0x0000063a, 0x00000645, + 0x80000645, 0x0000063a, 0x00000645, 0x8000064a, + 0x0000063a, 0x00000645, 0x80000649, 0x00000641, + 0x0000062e, 0x80000645, 0x00000641, 0x0000062e, + 0x80000645, 0x00000642, 0x00000645, 0x8000062d, + 0x00000642, 0x00000645, 0x80000645, 0x00000644, + 0x0000062d, 0x80000645, 0x00000644, 0x0000062d, + 0x8000064a, 0x00000644, 0x0000062d, 0x80000649, + 0x00000644, 0x0000062c, 0x8000062c, 0x00000644, + 0x0000062c, 0x8000062c, 0x00000644, 0x0000062e, + 0x80000645, 0x00000644, 0x0000062e, 0x80000645, + 0x00000644, 0x00000645, 0x8000062d, 0x00000644, + 0x00000645, 0x8000062d, 0x00000645, 0x0000062d, + 0x8000062c, 0x00000645, 0x0000062d, 0x80000645, + 0x00000645, 0x0000062d, 0x8000064a, 0x00000645, + 0x0000062c, 0x8000062d, 0x00000645, 0x0000062c, + 0x80000645, 0x00000645, 0x0000062e, 0x8000062c, + 0x00000645, 0x0000062e, 0x80000645, 0x00000645, + 0x0000062c, 0x8000062e, 0x00000647, 0x00000645, + 0x8000062c, 0x00000647, 0x00000645, 0x80000645, + 0x00000646, 0x0000062d, 0x80000645, 0x00000646, + 0x0000062d, 0x80000649, 0x00000646, 0x0000062c, + 0x80000645, 0x00000646, 0x0000062c, 0x80000645, + 0x00000646, 0x0000062c, 0x80000649, 0x00000646, + 0x00000645, 0x8000064a, 0x00000646, 0x00000645, + 0x80000649, 0x0000064a, 0x00000645, 0x80000645, + 0x0000064a, 0x00000645, 0x80000645, 0x00000628, + 0x0000062e, 0x8000064a, 0x0000062a, 0x0000062c, + 0x8000064a, 0x0000062a, 0x0000062c, 0x80000649, + 0x0000062a, 0x0000062e, 0x8000064a, 0x0000062a, + 0x0000062e, 0x80000649, 0x0000062a, 0x00000645, + 0x8000064a, 0x0000062a, 0x00000645, 0x80000649, + 0x0000062c, 0x00000645, 0x8000064a, 0x0000062c, + 0x0000062d, 0x80000649, 0x0000062c, 0x00000645, + 0x80000649, 0x00000633, 0x0000062e, 0x80000649, + 0x00000635, 0x0000062d, 0x8000064a, 0x00000634, + 0x0000062d, 0x8000064a, 0x00000636, 0x0000062d, + 0x8000064a, 0x00000644, 0x0000062c, 0x8000064a, + 0x00000644, 0x00000645, 0x8000064a, 0x0000064a, + 0x0000062d, 0x8000064a, 0x0000064a, 0x0000062c, + 0x8000064a, 0x0000064a, 0x00000645, 0x8000064a, + 0x00000645, 0x00000645, 0x8000064a, 0x00000642, + 0x00000645, 0x8000064a, 0x00000646, 0x0000062d, + 0x8000064a, 0x00000642, 0x00000645, 0x8000062d, + 0x00000644, 0x0000062d, 0x80000645, 0x00000639, + 0x00000645, 0x8000064a, 0x00000643, 0x00000645, + 0x8000064a, 0x00000646, 0x0000062c, 0x8000062d, + 0x00000645, 0x0000062e, 0x8000064a, 0x00000644, + 0x0000062c, 0x80000645, 0x00000643, 0x00000645, + 0x80000645, 0x00000644, 0x0000062c, 0x80000645, + 0x00000646, 0x0000062c, 0x8000062d, 0x0000062c, + 0x0000062d, 0x8000064a, 0x0000062d, 0x0000062c, + 0x8000064a, 0x00000645, 0x0000062c, 0x8000064a, + 0x00000641, 0x00000645, 0x8000064a, 0x00000628, + 0x0000062d, 0x8000064a, 0x00000643, 0x00000645, + 0x80000645, 0x00000639, 0x0000062c, 0x80000645, + 0x00000635, 0x00000645, 0x80000645, 0x00000633, + 0x0000062e, 0x8000064a, 0x00000646, 0x0000062c, + 0x8000064a, 0x00000635, 0x00000644, 0x800006d2, + 0x00000642, 0x00000644, 0x800006d2, 0x00000627, + 0x00000644, 0x00000644, 0x80000647, 0x00000627, + 0x00000643, 0x00000628, 0x80000631, 0x00000645, + 0x0000062d, 0x00000645, 0x8000062f, 0x00000635, + 0x00000644, 0x00000639, 0x80000645, 0x00000631, + 0x00000633, 0x00000648, 0x80000644, 0x00000639, + 0x00000644, 0x0000064a, 0x80000647, 0x00000648, + 0x00000633, 0x00000644, 0x80000645, 0x00000635, + 0x00000644, 0x80000649, 0x00000635, 0x00000644, + 0x00000649, 0x00000020, 0x00000627, 0x00000644, + 0x00000644, 0x00000647, 0x00000020, 0x00000639, + 0x00000644, 0x0000064a, 0x00000647, 0x00000020, + 0x00000648, 0x00000633, 0x00000644, 0x80000645, + 0x0000062c, 0x00000644, 0x00000020, 0x0000062c, + 0x00000644, 0x00000627, 0x00000644, 0x80000647, + 0x80002025, 0x80002014, 0x80002013, 0x8000005f, + 0x8000005f, 0x80000028, 0x80000029, 0x8000007b, + 0x8000007d, 0x80003014, 0x80003015, 0x80003010, + 0x80003011, 0x8000300a, 0x8000300b, 0x80003008, + 0x80003009, 0x8000300c, 0x8000300d, 0x8000300e, + 0x8000300f, 0x8000203e, 0x8000203e, 0x8000203e, + 0x8000203e, 0x8000005f, 0x8000005f, 0x8000005f, + 0x8000002c, 0x80003001, 0x8000002e, 0x8000003b, + 0x8000003a, 0x8000003f, 0x80000021, 0x80002014, + 0x80000028, 0x80000029, 0x8000007b, 0x8000007d, + 0x80003014, 0x80003015, 0x80000023, 0x80000026, + 0x8000002a, 0x8000002b, 0x8000002d, 0x8000003c, + 0x8000003e, 0x8000003d, 0x8000005c, 0x80000024, + 0x80000025, 0x80000040, 0x00000020, 0x8000064b, + 0x00000640, 0x8000064b, 0x00000020, 0x8000064c, + 0x00000020, 0x8000064d, 0x00000020, 0x8000064e, + 0x00000640, 0x8000064e, 0x00000020, 0x8000064f, + 0x00000640, 0x8000064f, 0x00000020, 0x80000650, + 0x00000640, 0x80000650, 0x00000020, 0x80000651, + 0x00000640, 0x80000651, 0x00000020, 0x80000652, + 0x00000640, 0x80000652, 0x80000621, 0x80000622, + 0x80000622, 0x80000623, 0x80000623, 0x80000624, + 0x80000624, 0x80000625, 0x80000625, 0x80000626, + 0x80000626, 0x80000626, 0x80000626, 0x80000627, + 0x80000627, 0x80000628, 0x80000628, 0x80000628, + 0x80000628, 0x80000629, 0x80000629, 0x8000062a, + 0x8000062a, 0x8000062a, 0x8000062a, 0x8000062b, + 0x8000062b, 0x8000062b, 0x8000062b, 0x8000062c, + 0x8000062c, 0x8000062c, 0x8000062c, 0x8000062d, + 0x8000062d, 0x8000062d, 0x8000062d, 0x8000062e, + 0x8000062e, 0x8000062e, 0x8000062e, 0x8000062f, + 0x8000062f, 0x80000630, 0x80000630, 0x80000631, + 0x80000631, 0x80000632, 0x80000632, 0x80000633, + 0x80000633, 0x80000633, 0x80000633, 0x80000634, + 0x80000634, 0x80000634, 0x80000634, 0x80000635, + 0x80000635, 0x80000635, 0x80000635, 0x80000636, + 0x80000636, 0x80000636, 0x80000636, 0x80000637, + 0x80000637, 0x80000637, 0x80000637, 0x80000638, + 0x80000638, 0x80000638, 0x80000638, 0x80000639, + 0x80000639, 0x80000639, 0x80000639, 0x8000063a, + 0x8000063a, 0x8000063a, 0x8000063a, 0x80000641, + 0x80000641, 0x80000641, 0x80000641, 0x80000642, + 0x80000642, 0x80000642, 0x80000642, 0x80000643, + 0x80000643, 0x80000643, 0x80000643, 0x80000644, + 0x80000644, 0x80000644, 0x80000644, 0x80000645, + 0x80000645, 0x80000645, 0x80000645, 0x80000646, + 0x80000646, 0x80000646, 0x80000646, 0x80000647, + 0x80000647, 0x80000647, 0x80000647, 0x80000648, + 0x80000648, 0x80000649, 0x80000649, 0x8000064a, + 0x8000064a, 0x8000064a, 0x8000064a, 0x00000644, + 0x80000622, 0x00000644, 0x80000622, 0x00000644, + 0x80000623, 0x00000644, 0x80000623, 0x00000644, + 0x80000625, 0x00000644, 0x80000625, 0x00000644, + 0x80000627, 0x00000644, 0x80000627, 0x80000021, + 0x80000022, 0x80000023, 0x80000024, 0x80000025, + 0x80000026, 0x80000027, 0x80000028, 0x80000029, + 0x8000002a, 0x8000002b, 0x8000002c, 0x8000002d, + 0x8000002e, 0x8000002f, 0x80000030, 0x80000031, + 0x80000032, 0x80000033, 0x80000034, 0x80000035, + 0x80000036, 0x80000037, 0x80000038, 0x80000039, + 0x8000003a, 0x8000003b, 0x8000003c, 0x8000003d, + 0x8000003e, 0x8000003f, 0x80000040, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x8000005b, 0x8000005c, 0x8000005d, + 0x8000005e, 0x8000005f, 0x80000060, 0x80000061, + 0x80000062, 0x80000063, 0x80000064, 0x80000065, + 0x80000066, 0x80000067, 0x80000068, 0x80000069, + 0x8000006a, 0x8000006b, 0x8000006c, 0x8000006d, + 0x8000006e, 0x8000006f, 0x80000070, 0x80000071, + 0x80000072, 0x80000073, 0x80000074, 0x80000075, + 0x80000076, 0x80000077, 0x80000078, 0x80000079, + 0x8000007a, 0x8000007b, 0x8000007c, 0x8000007d, + 0x8000007e, 0x80003002, 0x8000300c, 0x8000300d, + 0x80003001, 0x800030fb, 0x800030f2, 0x800030a1, + 0x800030a3, 0x800030a5, 0x800030a7, 0x800030a9, + 0x800030e3, 0x800030e5, 0x800030e7, 0x800030c3, + 0x800030fc, 0x800030a2, 0x800030a4, 0x800030a6, + 0x800030a8, 0x800030aa, 0x800030ab, 0x800030ad, + 0x800030af, 0x800030b1, 0x800030b3, 0x800030b5, + 0x800030b7, 0x800030b9, 0x800030bb, 0x800030bd, + 0x800030bf, 0x800030c1, 0x800030c4, 0x800030c6, + 0x800030c8, 0x800030ca, 0x800030cb, 0x800030cc, + 0x800030cd, 0x800030ce, 0x800030cf, 0x800030d2, + 0x800030d5, 0x800030d8, 0x800030db, 0x800030de, + 0x800030df, 0x800030e0, 0x800030e1, 0x800030e2, + 0x800030e4, 0x800030e6, 0x800030e8, 0x800030e9, + 0x800030ea, 0x800030eb, 0x800030ec, 0x800030ed, + 0x800030ef, 0x800030f3, 0x80003099, 0x8000309a, + 0x80003164, 0x80003131, 0x80003132, 0x80003133, + 0x80003134, 0x80003135, 0x80003136, 0x80003137, + 0x80003138, 0x80003139, 0x8000313a, 0x8000313b, + 0x8000313c, 0x8000313d, 0x8000313e, 0x8000313f, + 0x80003140, 0x80003141, 0x80003142, 0x80003143, + 0x80003144, 0x80003145, 0x80003146, 0x80003147, + 0x80003148, 0x80003149, 0x8000314a, 0x8000314b, + 0x8000314c, 0x8000314d, 0x8000314e, 0x8000314f, + 0x80003150, 0x80003151, 0x80003152, 0x80003153, + 0x80003154, 0x80003155, 0x80003156, 0x80003157, + 0x80003158, 0x80003159, 0x8000315a, 0x8000315b, + 0x8000315c, 0x8000315d, 0x8000315e, 0x8000315f, + 0x80003160, 0x80003161, 0x80003162, 0x80003163, + 0x800000a2, 0x800000a3, 0x800000ac, 0x800000af, + 0x800000a6, 0x800000a5, 0x800020a9, 0x80002502, + 0x80002190, 0x80002191, 0x80002192, 0x80002193, + 0x800025a0, 0x800025cb, 0x0001d157, 0x8001d165, + 0x0001d158, 0x8001d165, 0x0001d15f, 0x8001d16e, + 0x0001d15f, 0x8001d16f, 0x0001d15f, 0x8001d170, + 0x0001d15f, 0x8001d171, 0x0001d15f, 0x8001d172, + 0x0001d1b9, 0x8001d165, 0x0001d1ba, 0x8001d165, + 0x0001d1bb, 0x8001d16e, 0x0001d1bc, 0x8001d16e, + 0x0001d1bb, 0x8001d16f, 0x0001d1bc, 0x8001d16f, + 0x80000041, 0x80000042, 0x80000043, 0x80000044, + 0x80000045, 0x80000046, 0x80000047, 0x80000048, + 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, + 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, + 0x80000051, 0x80000052, 0x80000053, 0x80000054, + 0x80000055, 0x80000056, 0x80000057, 0x80000058, + 0x80000059, 0x8000005a, 0x80000061, 0x80000062, + 0x80000063, 0x80000064, 0x80000065, 0x80000066, + 0x80000067, 0x80000068, 0x80000069, 0x8000006a, + 0x8000006b, 0x8000006c, 0x8000006d, 0x8000006e, + 0x8000006f, 0x80000070, 0x80000071, 0x80000072, + 0x80000073, 0x80000074, 0x80000075, 0x80000076, + 0x80000077, 0x80000078, 0x80000079, 0x8000007a, + 0x80000041, 0x80000042, 0x80000043, 0x80000044, + 0x80000045, 0x80000046, 0x80000047, 0x80000048, + 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, + 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, + 0x80000051, 0x80000052, 0x80000053, 0x80000054, + 0x80000055, 0x80000056, 0x80000057, 0x80000058, + 0x80000059, 0x8000005a, 0x80000061, 0x80000062, + 0x80000063, 0x80000064, 0x80000065, 0x80000066, + 0x80000067, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000043, 0x80000044, 0x80000047, 0x8000004a, + 0x8000004b, 0x8000004e, 0x8000004f, 0x80000050, + 0x80000051, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000066, 0x80000068, 0x80000069, + 0x8000006a, 0x8000006b, 0x8000006d, 0x8000006e, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000044, 0x80000045, 0x80000046, + 0x80000047, 0x8000004a, 0x8000004b, 0x8000004c, + 0x8000004d, 0x8000004e, 0x8000004f, 0x80000050, + 0x80000051, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x80000061, 0x80000062, 0x80000063, 0x80000064, + 0x80000065, 0x80000066, 0x80000067, 0x80000068, + 0x80000069, 0x8000006a, 0x8000006b, 0x8000006c, + 0x8000006d, 0x8000006e, 0x8000006f, 0x80000070, + 0x80000071, 0x80000072, 0x80000073, 0x80000074, + 0x80000075, 0x80000076, 0x80000077, 0x80000078, + 0x80000079, 0x8000007a, 0x80000041, 0x80000042, + 0x80000044, 0x80000045, 0x80000046, 0x80000047, + 0x80000049, 0x8000004a, 0x8000004b, 0x8000004c, + 0x8000004d, 0x8000004f, 0x80000053, 0x80000054, + 0x80000055, 0x80000056, 0x80000057, 0x80000058, + 0x80000059, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000041, + 0x80000042, 0x80000043, 0x80000044, 0x80000045, + 0x80000046, 0x80000047, 0x80000048, 0x80000049, + 0x8000004a, 0x8000004b, 0x8000004c, 0x8000004d, + 0x8000004e, 0x8000004f, 0x80000050, 0x80000051, + 0x80000052, 0x80000053, 0x80000054, 0x80000055, + 0x80000056, 0x80000057, 0x80000058, 0x80000059, + 0x8000005a, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x80000391, + 0x80000392, 0x80000393, 0x80000394, 0x80000395, + 0x80000396, 0x80000397, 0x80000398, 0x80000399, + 0x8000039a, 0x8000039b, 0x8000039c, 0x8000039d, + 0x8000039e, 0x8000039f, 0x800003a0, 0x800003a1, + 0x800003f4, 0x800003a3, 0x800003a4, 0x800003a5, + 0x800003a6, 0x800003a7, 0x800003a8, 0x800003a9, + 0x80002207, 0x800003b1, 0x800003b2, 0x800003b3, + 0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, + 0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, + 0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, + 0x800003c0, 0x800003c1, 0x800003c2, 0x800003c3, + 0x800003c4, 0x800003c5, 0x800003c6, 0x800003c7, + 0x800003c8, 0x800003c9, 0x80002202, 0x800003f5, + 0x800003d1, 0x800003f0, 0x800003d5, 0x800003f1, + 0x800003d6, 0x80000391, 0x80000392, 0x80000393, + 0x80000394, 0x80000395, 0x80000396, 0x80000397, + 0x80000398, 0x80000399, 0x8000039a, 0x8000039b, + 0x8000039c, 0x8000039d, 0x8000039e, 0x8000039f, + 0x800003a0, 0x800003a1, 0x800003f4, 0x800003a3, + 0x800003a4, 0x800003a5, 0x800003a6, 0x800003a7, + 0x800003a8, 0x800003a9, 0x80002207, 0x800003b1, + 0x800003b2, 0x800003b3, 0x800003b4, 0x800003b5, + 0x800003b6, 0x800003b7, 0x800003b8, 0x800003b9, + 0x800003ba, 0x800003bb, 0x800003bc, 0x800003bd, + 0x800003be, 0x800003bf, 0x800003c0, 0x800003c1, + 0x800003c2, 0x800003c3, 0x800003c4, 0x800003c5, + 0x800003c6, 0x800003c7, 0x800003c8, 0x800003c9, + 0x80002202, 0x800003f5, 0x800003d1, 0x800003f0, + 0x800003d5, 0x800003f1, 0x800003d6, 0x80000391, + 0x80000392, 0x80000393, 0x80000394, 0x80000395, + 0x80000396, 0x80000397, 0x80000398, 0x80000399, + 0x8000039a, 0x8000039b, 0x8000039c, 0x8000039d, + 0x8000039e, 0x8000039f, 0x800003a0, 0x800003a1, + 0x800003f4, 0x800003a3, 0x800003a4, 0x800003a5, + 0x800003a6, 0x800003a7, 0x800003a8, 0x800003a9, + 0x80002207, 0x800003b1, 0x800003b2, 0x800003b3, + 0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, + 0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, + 0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, + 0x800003c0, 0x800003c1, 0x800003c2, 0x800003c3, + 0x800003c4, 0x800003c5, 0x800003c6, 0x800003c7, + 0x800003c8, 0x800003c9, 0x80002202, 0x800003f5, + 0x800003d1, 0x800003f0, 0x800003d5, 0x800003f1, + 0x800003d6, 0x80000391, 0x80000392, 0x80000393, + 0x80000394, 0x80000395, 0x80000396, 0x80000397, + 0x80000398, 0x80000399, 0x8000039a, 0x8000039b, + 0x8000039c, 0x8000039d, 0x8000039e, 0x8000039f, + 0x800003a0, 0x800003a1, 0x800003f4, 0x800003a3, + 0x800003a4, 0x800003a5, 0x800003a6, 0x800003a7, + 0x800003a8, 0x800003a9, 0x80002207, 0x800003b1, + 0x800003b2, 0x800003b3, 0x800003b4, 0x800003b5, + 0x800003b6, 0x800003b7, 0x800003b8, 0x800003b9, + 0x800003ba, 0x800003bb, 0x800003bc, 0x800003bd, + 0x800003be, 0x800003bf, 0x800003c0, 0x800003c1, + 0x800003c2, 0x800003c3, 0x800003c4, 0x800003c5, + 0x800003c6, 0x800003c7, 0x800003c8, 0x800003c9, + 0x80002202, 0x800003f5, 0x800003d1, 0x800003f0, + 0x800003d5, 0x800003f1, 0x800003d6, 0x80000391, + 0x80000392, 0x80000393, 0x80000394, 0x80000395, + 0x80000396, 0x80000397, 0x80000398, 0x80000399, + 0x8000039a, 0x8000039b, 0x8000039c, 0x8000039d, + 0x8000039e, 0x8000039f, 0x800003a0, 0x800003a1, + 0x800003f4, 0x800003a3, 0x800003a4, 0x800003a5, + 0x800003a6, 0x800003a7, 0x800003a8, 0x800003a9, + 0x80002207, 0x800003b1, 0x800003b2, 0x800003b3, + 0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, + 0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, + 0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, + 0x800003c0, 0x800003c1, 0x800003c2, 0x800003c3, + 0x800003c4, 0x800003c5, 0x800003c6, 0x800003c7, + 0x800003c8, 0x800003c9, 0x80002202, 0x800003f5, + 0x800003d1, 0x800003f0, 0x800003d5, 0x800003f1, + 0x800003d6, 0x80000030, 0x80000031, 0x80000032, + 0x80000033, 0x80000034, 0x80000035, 0x80000036, + 0x80000037, 0x80000038, 0x80000039, 0x80000030, + 0x80000031, 0x80000032, 0x80000033, 0x80000034, + 0x80000035, 0x80000036, 0x80000037, 0x80000038, + 0x80000039, 0x80000030, 0x80000031, 0x80000032, + 0x80000033, 0x80000034, 0x80000035, 0x80000036, + 0x80000037, 0x80000038, 0x80000039, 0x80000030, + 0x80000031, 0x80000032, 0x80000033, 0x80000034, + 0x80000035, 0x80000036, 0x80000037, 0x80000038, + 0x80000039, 0x80000030, 0x80000031, 0x80000032, + 0x80000033, 0x80000034, 0x80000035, 0x80000036, + 0x80000037, 0x80000038, 0x80000039, 0x80004e3d, + 0x80004e38, 0x80004e41, 0x80020122, 0x80004f60, + 0x80004fae, 0x80004fbb, 0x80005002, 0x8000507a, + 0x80005099, 0x800050e7, 0x800050cf, 0x8000349e, + 0x8002063a, 0x8000514d, 0x80005154, 0x80005164, + 0x80005177, 0x8002051c, 0x800034b9, 0x80005167, + 0x8000518d, 0x8002054b, 0x80005197, 0x800051a4, + 0x80004ecc, 0x800051ac, 0x800051b5, 0x800291df, + 0x800051f5, 0x80005203, 0x800034df, 0x8000523b, + 0x80005246, 0x80005272, 0x80005277, 0x80003515, + 0x800052c7, 0x800052c9, 0x800052e4, 0x800052fa, + 0x80005305, 0x80005306, 0x80005317, 0x80005349, + 0x80005351, 0x8000535a, 0x80005373, 0x8000537d, + 0x8000537f, 0x8000537f, 0x8000537f, 0x80020a2c, + 0x80007070, 0x800053ca, 0x800053df, 0x80020b63, + 0x800053eb, 0x800053f1, 0x80005406, 0x8000549e, + 0x80005438, 0x80005448, 0x80005468, 0x800054a2, + 0x800054f6, 0x80005510, 0x80005553, 0x80005563, + 0x80005584, 0x80005584, 0x80005599, 0x800055ab, + 0x800055b3, 0x800055c2, 0x80005716, 0x80005606, + 0x80005717, 0x80005651, 0x80005674, 0x80005207, + 0x800058ee, 0x800057ce, 0x800057f4, 0x8000580d, + 0x8000578b, 0x80005832, 0x80005831, 0x800058ac, + 0x800214e4, 0x800058f2, 0x800058f7, 0x80005906, + 0x8000591a, 0x80005922, 0x80005962, 0x800216a8, + 0x800216ea, 0x800059ec, 0x80005a1b, 0x80005a27, + 0x800059d8, 0x80005a66, 0x800036ee, 0x8002136a, + 0x80005b08, 0x80005b3e, 0x80005b3e, 0x800219c8, + 0x80005bc3, 0x80005bd8, 0x80005be7, 0x80005bf3, + 0x80021b18, 0x80005bff, 0x80005c06, 0x80005f33, + 0x80005c22, 0x80003781, 0x80005c60, 0x80005c6e, + 0x80005cc0, 0x80005c8d, 0x80021de4, 0x80005d43, + 0x80021de6, 0x80005d6e, 0x80005d6b, 0x80005d7c, + 0x80005de1, 0x80005de2, 0x8000382f, 0x80005dfd, + 0x80005e28, 0x80005e3d, 0x80005e69, 0x80003862, + 0x80022183, 0x8000387c, 0x80005eb0, 0x80005eb3, + 0x80005eb6, 0x80005eca, 0x8002a392, 0x80005efe, + 0x80022331, 0x80022331, 0x80008201, 0x80005f22, + 0x80005f22, 0x800038c7, 0x800232b8, 0x800261da, + 0x80005f62, 0x80005f6b, 0x800038e3, 0x80005f9a, + 0x80005fcd, 0x80005fd7, 0x80005ff9, 0x80006081, + 0x8000393a, 0x8000391c, 0x80006094, 0x800226d4, + 0x800060c7, 0x80006148, 0x8000614c, 0x8000614e, + 0x8000614c, 0x8000617a, 0x8000618e, 0x800061b2, + 0x800061a4, 0x800061af, 0x800061de, 0x800061f2, + 0x800061f6, 0x80006210, 0x8000621b, 0x8000625d, + 0x800062b1, 0x800062d4, 0x80006350, 0x80022b0c, + 0x8000633d, 0x800062fc, 0x80006368, 0x80006383, + 0x800063e4, 0x80022bf1, 0x80006422, 0x800063c5, + 0x800063a9, 0x80003a2e, 0x80006469, 0x8000647e, + 0x8000649d, 0x80006477, 0x80003a6c, 0x8000654f, + 0x8000656c, 0x8002300a, 0x800065e3, 0x800066f8, + 0x80006649, 0x80003b19, 0x80006691, 0x80003b08, + 0x80003ae4, 0x80005192, 0x80005195, 0x80006700, + 0x8000669c, 0x800080ad, 0x800043d9, 0x80006717, + 0x8000671b, 0x80006721, 0x8000675e, 0x80006753, + 0x800233c3, 0x80003b49, 0x800067fa, 0x80006785, + 0x80006852, 0x80006885, 0x8002346d, 0x8000688e, + 0x8000681f, 0x80006914, 0x80003b9d, 0x80006942, + 0x800069a3, 0x800069ea, 0x80006aa8, 0x800236a3, + 0x80006adb, 0x80003c18, 0x80006b21, 0x800238a7, + 0x80006b54, 0x80003c4e, 0x80006b72, 0x80006b9f, + 0x80006bba, 0x80006bbb, 0x80023a8d, 0x80021d0b, + 0x80023afa, 0x80006c4e, 0x80023cbc, 0x80006cbf, + 0x80006ccd, 0x80006c67, 0x80006d16, 0x80006d3e, + 0x80006d77, 0x80006d41, 0x80006d69, 0x80006d78, + 0x80006d85, 0x80023d1e, 0x80006d34, 0x80006e2f, + 0x80006e6e, 0x80003d33, 0x80006ecb, 0x80006ec7, + 0x80023ed1, 0x80006df9, 0x80006f6e, 0x80023f5e, + 0x80023f8e, 0x80006fc6, 0x80007039, 0x8000701e, + 0x8000701b, 0x80003d96, 0x8000704a, 0x8000707d, + 0x80007077, 0x800070ad, 0x80020525, 0x80007145, + 0x80024263, 0x8000719c, 0x800043ab, 0x80007228, + 0x80007235, 0x80007250, 0x80024608, 0x80007280, + 0x80007295, 0x80024735, 0x80024814, 0x8000737a, + 0x8000738b, 0x80003eac, 0x800073a5, 0x80003eb8, + 0x80003eb8, 0x80007447, 0x8000745c, 0x80007471, + 0x80007485, 0x800074ca, 0x80003f1b, 0x80007524, + 0x80024c36, 0x8000753e, 0x80024c92, 0x80007570, + 0x8002219f, 0x80007610, 0x80024fa1, 0x80024fb8, + 0x80025044, 0x80003ffc, 0x80004008, 0x800076f4, + 0x800250f3, 0x800250f2, 0x80025119, 0x80025133, + 0x8000771e, 0x8000771f, 0x8000771f, 0x8000774a, + 0x80004039, 0x8000778b, 0x80004046, 0x80004096, + 0x8002541d, 0x8000784e, 0x8000788c, 0x800078cc, + 0x800040e3, 0x80025626, 0x80007956, 0x8002569a, + 0x800256c5, 0x8000798f, 0x800079eb, 0x8000412f, + 0x80007a40, 0x80007a4a, 0x80007a4f, 0x8002597c, + 0x80025aa7, 0x80025aa7, 0x80007aae, 0x80004202, + 0x80025bab, 0x80007bc6, 0x80007bc9, 0x80004227, + 0x80025c80, 0x80007cd2, 0x800042a0, 0x80007ce8, + 0x80007ce3, 0x80007d00, 0x80025f86, 0x80007d63, + 0x80004301, 0x80007dc7, 0x80007e02, 0x80007e45, + 0x80004334, 0x80026228, 0x80026247, 0x80004359, + 0x800262d9, 0x80007f7a, 0x8002633e, 0x80007f95, + 0x80007ffa, 0x80008005, 0x800264da, 0x80026523, + 0x80008060, 0x800265a8, 0x80008070, 0x8002335f, + 0x800043d5, 0x800080b2, 0x80008103, 0x8000440b, + 0x8000813e, 0x80005ab5, 0x800267a7, 0x800267b5, + 0x80023393, 0x8002339c, 0x80008201, 0x80008204, + 0x80008f9e, 0x8000446b, 0x80008291, 0x8000828b, + 0x8000829d, 0x800052b3, 0x800082b1, 0x800082b3, + 0x800082bd, 0x800082e6, 0x80026b3c, 0x800082e5, + 0x8000831d, 0x80008363, 0x800083ad, 0x80008323, + 0x800083bd, 0x800083e7, 0x80008457, 0x80008353, + 0x800083ca, 0x800083cc, 0x800083dc, 0x80026c36, + 0x80026d6b, 0x80026cd5, 0x8000452b, 0x800084f1, + 0x800084f3, 0x80008516, 0x800273ca, 0x80008564, + 0x80026f2c, 0x8000455d, 0x80004561, 0x80026fb1, + 0x800270d2, 0x8000456b, 0x80008650, 0x8000865c, + 0x80008667, 0x80008669, 0x800086a9, 0x80008688, + 0x8000870e, 0x800086e2, 0x80008779, 0x80008728, + 0x8000876b, 0x80008786, 0x80004d57, 0x800087e1, + 0x80008801, 0x800045f9, 0x80008860, 0x80008863, + 0x80027667, 0x800088d7, 0x800088de, 0x80004635, + 0x800088fa, 0x800034bb, 0x800278ae, 0x80027966, + 0x800046be, 0x800046c7, 0x80008aa0, 0x80008aed, + 0x80008b8a, 0x80008c55, 0x80027ca8, 0x80008cab, + 0x80008cc1, 0x80008d1b, 0x80008d77, 0x80027f2f, + 0x80020804, 0x80008dcb, 0x80008dbc, 0x80008df0, + 0x800208de, 0x80008ed4, 0x80008f38, 0x800285d2, + 0x800285ed, 0x80009094, 0x800090f1, 0x80009111, + 0x8002872e, 0x8000911b, 0x80009238, 0x800092d7, + 0x800092d8, 0x8000927c, 0x800093f9, 0x80009415, + 0x80028bfa, 0x8000958b, 0x80004995, 0x800095b7, + 0x80028d77, 0x800049e6, 0x800096c3, 0x80005db2, + 0x80009723, 0x80029145, 0x8002921a, 0x80004a6e, + 0x80004a76, 0x800097e0, 0x8002940a, 0x80004ab2, + 0x80029496, 0x8000980b, 0x8000980b, 0x80009829, + 0x800295b6, 0x800098e2, 0x80004b33, 0x80009929, + 0x800099a7, 0x800099c2, 0x800099fe, 0x80004bce, + 0x80029b30, 0x80009b12, 0x80009c40, 0x80009cfd, + 0x80004cce, 0x80004ced, 0x80009d67, 0x8002a0ce, + 0x80004cf8, 0x8002a105, 0x8002a20e, 0x8002a291, + 0x80009ebb, 0x80004d56, 0x80009ef9, 0x80009efe, + 0x80009f05, 0x80009f0f, 0x80009f16, 0x80009f3b, + 0x8002a600, +}; + + +/* + * Lowercase <-> Uppercase mapping + */ + +/* + * Flags for special case mapping. + */ +#define CMF_FINAL 1 +#define CMF_NONFINAL 2 +#define CMF_LAST 16 +#define CMF_CTXDEP (CMF_FINAL|CMF_NONFINAL) + +#define CASEMAP_BITS_0 9 +#define CASEMAP_BITS_1 7 +#define CASEMAP_BITS_2 5 + +static const unsigned short v310_toupper_imap[] = { + 272, 400, 528, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 784, + 912, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 0, 0, 0, 1, 0, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 0, 0, 0, + 0, 0, 18, 0, 19, 20, 21, 22, + 0, 23, 24, 25, 26, 27, 28, 29, + 0, 0, 0, 30, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 49, 50, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 51, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 52, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 53, 54, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned short tbl[32]; +} v310_toupper_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, + 43, 45, 47, 49, 51, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, + }}, + {{ + 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, + 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, + 102, 0, 104, 106, 108, 110, 112, 114, 116, 118, + }}, + {{ + 0, 120, 0, 122, 0, 124, 0, 126, 0, 128, 0, + 130, 0, 132, 0, 134, 0, 136, 0, 138, 0, 140, + 0, 142, 0, 144, 0, 146, 0, 148, 0, 150, + }}, + {{ + 0, 152, 0, 154, 0, 156, 0, 158, 0, 160, 0, + 162, 0, 164, 0, 166, 0, 168, 0, 170, 0, 172, + 0, 174, 0, 0, 176, 0, 178, 0, 180, 0, + }}, + {{ + 182, 0, 184, 0, 186, 0, 188, 0, 190, 192, 0, + 195, 0, 197, 0, 199, 0, 201, 0, 203, 0, 205, + 0, 207, 0, 209, 0, 211, 0, 213, 0, 215, + }}, + {{ + 0, 217, 0, 219, 0, 221, 0, 223, 0, 225, 0, + 227, 0, 229, 0, 231, 0, 233, 0, 235, 0, 237, + 0, 239, 0, 0, 241, 0, 243, 0, 245, 247, + }}, + {{ + 0, 0, 0, 249, 0, 251, 0, 0, 253, 0, 0, + 0, 255, 0, 0, 0, 0, 0, 257, 0, 0, 259, + 0, 0, 0, 261, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 263, 0, 265, 0, 267, 0, 0, 269, 0, 0, + 0, 0, 271, 0, 0, 273, 0, 0, 0, 275, 0, + 277, 0, 0, 279, 0, 0, 0, 281, 0, 283, + }}, + {{ + 0, 0, 0, 0, 0, 285, 287, 0, 289, 291, 0, + 293, 295, 0, 297, 0, 299, 0, 301, 0, 303, 0, + 305, 0, 307, 0, 309, 0, 311, 313, 0, 315, + }}, + {{ + 0, 317, 0, 319, 0, 321, 0, 323, 0, 325, 0, + 327, 0, 329, 0, 331, 333, 0, 336, 338, 0, 340, + 0, 0, 0, 342, 0, 344, 0, 346, 0, 348, + }}, + {{ + 0, 350, 0, 352, 0, 354, 0, 356, 0, 358, 0, + 360, 0, 362, 0, 364, 0, 366, 0, 368, 0, 370, + 0, 372, 0, 374, 0, 376, 0, 378, 0, 380, + }}, + {{ + 0, 0, 0, 382, 0, 384, 0, 386, 0, 388, 0, + 390, 0, 392, 0, 394, 0, 396, 0, 398, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 400, 402, 0, + 404, 406, 0, 408, 0, 410, 0, 0, 0, 0, + }}, + {{ + 412, 0, 0, 414, 0, 0, 0, 0, 416, 418, 0, + 0, 0, 0, 0, 420, 0, 0, 422, 0, 0, 424, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 426, 0, 0, 428, 0, 0, 0, 0, 430, 0, 432, + 434, 0, 0, 0, 0, 0, 0, 436, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 444, 446, 448, 450, 452, 456, 458, 460, 462, 464, + 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, + }}, + {{ + 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, + 508, 510, 512, 514, 0, 516, 518, 0, 0, 0, 520, + 522, 0, 0, 0, 0, 524, 0, 526, 0, 528, + }}, + {{ + 0, 530, 0, 532, 0, 534, 0, 536, 0, 538, 0, + 540, 0, 542, 0, 544, 546, 548, 550, 0, 0, 552, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 554, 556, 558, 560, 562, 564, + 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, + }}, + {{ + 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, + 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, + 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, + }}, + {{ + 0, 650, 0, 652, 0, 654, 0, 656, 0, 658, 0, + 660, 0, 662, 0, 664, 0, 666, 0, 668, 0, 670, + 0, 672, 0, 674, 0, 676, 0, 678, 0, 680, + }}, + {{ + 0, 682, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 684, 0, 686, 0, 688, 0, 690, 0, 692, + 0, 694, 0, 696, 0, 698, 0, 700, 0, 702, + }}, + {{ + 0, 704, 0, 706, 0, 708, 0, 710, 0, 712, 0, + 714, 0, 716, 0, 718, 0, 720, 0, 722, 0, 724, + 0, 726, 0, 728, 0, 730, 0, 732, 0, 734, + }}, + {{ + 0, 0, 736, 0, 738, 0, 0, 0, 740, 0, 0, + 0, 742, 0, 0, 0, 0, 744, 0, 746, 0, 748, + 0, 750, 0, 752, 0, 754, 0, 756, 0, 758, + }}, + {{ + 0, 760, 0, 762, 0, 764, 0, 766, 0, 768, 0, + 770, 0, 772, 0, 774, 0, 776, 0, 778, 0, 780, + 0, 0, 0, 782, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, + 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, + 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, + }}, + {{ + 846, 848, 850, 852, 854, 856, 858, 860, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 863, 0, 865, 0, 867, 0, 869, 0, 871, 0, + 873, 0, 875, 0, 877, 0, 879, 0, 881, 0, 883, + 0, 885, 0, 887, 0, 889, 0, 891, 0, 893, + }}, + {{ + 0, 895, 0, 897, 0, 899, 0, 901, 0, 903, 0, + 905, 0, 907, 0, 909, 0, 911, 0, 913, 0, 915, + 0, 917, 0, 919, 0, 921, 0, 923, 0, 925, + }}, + {{ + 0, 927, 0, 929, 0, 931, 0, 933, 0, 935, 0, + 937, 0, 939, 0, 941, 0, 943, 0, 945, 0, 947, + 0, 949, 0, 951, 0, 953, 0, 955, 0, 957, + }}, + {{ + 0, 959, 0, 961, 0, 963, 0, 965, 0, 967, 0, + 969, 0, 971, 0, 973, 0, 975, 0, 977, 0, 979, + 0, 981, 0, 983, 0, 985, 0, 987, 0, 989, + }}, + {{ + 0, 991, 0, 993, 0, 995, 0, 997, 0, 999, 0, + 1001, 0, 1003, 0, 1005, 0, 1007, 0, 1009, 0, 1011, + 1013, 1016, 1019, 1022, 1025, 1028, 0, 0, 0, 0, + }}, + {{ + 0, 1030, 0, 1032, 0, 1034, 0, 1036, 0, 1038, 0, + 1040, 0, 1042, 0, 1044, 0, 1046, 0, 1048, 0, 1050, + 0, 1052, 0, 1054, 0, 1056, 0, 1058, 0, 1060, + }}, + {{ + 0, 1062, 0, 1064, 0, 1066, 0, 1068, 0, 1070, 0, + 1072, 0, 1074, 0, 1076, 0, 1078, 0, 1080, 0, 1082, + 0, 1084, 0, 1086, 0, 1088, 0, 1090, 0, 1092, + }}, + {{ + 0, 1094, 0, 1096, 0, 1098, 0, 1100, 0, 1102, 0, + 1104, 0, 1106, 0, 1108, 0, 1110, 0, 1112, 0, 1114, + 0, 1116, 0, 1118, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134, 0, 0, 0, + 0, 0, 0, 0, 0, 1136, 1138, 1140, 1142, 1144, 1146, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1148, 1150, 1152, 1154, 1156, 1158, 1160, 1162, 0, 0, 0, + 0, 0, 0, 0, 0, 1164, 1166, 1168, 1170, 1172, 1174, + 1176, 1178, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1180, 1182, 1184, 1186, 1188, 1190, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1192, 1195, 1197, 1201, 1203, 1207, + 1209, 1213, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1215, 1217, 1219, 1221, 1223, 1225, 1227, 1229, 0, 0, 0, + 0, 0, 0, 0, 0, 1231, 1233, 1235, 1237, 1239, 1241, + 1243, 1245, 1247, 1249, 1251, 1253, 1255, 1257, 0, 0, + }}, + {{ + 1259, 1264, 1269, 1274, 1279, 1284, 1289, 1294, 1299, 1302, 1305, + 1308, 1311, 1314, 1317, 1320, 1323, 1328, 1333, 1338, 1343, 1348, + 1353, 1358, 1363, 1366, 1369, 1372, 1375, 1378, 1381, 1384, + }}, + {{ + 1387, 1392, 1397, 1402, 1407, 1412, 1417, 1422, 1427, 1430, 1433, + 1436, 1439, 1442, 1445, 1448, 1451, 1453, 1455, 1458, 1463, 0, + 1466, 1469, 0, 0, 0, 0, 1473, 0, 1476, 0, + }}, + {{ + 0, 0, 1478, 1481, 1486, 0, 1489, 1492, 0, 0, 0, + 0, 1496, 0, 0, 0, 1499, 1501, 1503, 1507, 0, 0, + 1511, 1514, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1518, 1520, 1522, 1526, 1530, 1533, 1535, 1538, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1542, 1545, 1550, 0, + 1553, 1556, 0, 0, 0, 0, 1560, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1563, 1565, 1567, 1569, 1571, 1573, + 1575, 1577, 1579, 1581, 1583, 1585, 1587, 1589, 1591, 1593, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1595, 1597, 1599, 1601, 1603, 1605, + 1607, 1609, 1611, 1613, 1615, 1617, 1619, 1621, 1623, 1625, + }}, + {{ + 1627, 1629, 1631, 1633, 1635, 1637, 1639, 1641, 1643, 1645, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1647, 1650, 1653, 1656, 1660, 1664, 1667, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1670, 1673, 1676, + 1679, 1682, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1685, 1687, 1689, 1691, 1693, 1695, 1697, 1699, 1701, 1703, + 1705, 1707, 1709, 1711, 1713, 1715, 1717, 1719, 1721, 1723, 1725, + 1727, 1729, 1731, 1733, 1735, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1737, 1739, 1741, + 1743, 1745, 1747, 1749, 1751, 1753, 1755, 1757, 1759, 1761, 1763, + 1765, 1767, 1769, 1771, 1773, 1775, 1777, 1779, 1781, 1783, + }}, + {{ + 1785, 1787, 1789, 1791, 1793, 1795, 1797, 1799, 1801, 1803, 1805, + 1807, 1809, 1811, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; +static const unsigned short v310_tolower_imap[] = { + 272, 400, 528, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 784, + 912, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 0, 0, 1, 0, 0, 0, 2, 0, + 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 13, 14, 15, 16, + 17, 18, 0, 19, 20, 21, 22, 23, + 0, 24, 25, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 42, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 44, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 46, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 47, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned short tbl[32]; +} v310_tolower_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, + 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, + 43, 45, 47, 49, 51, 0, 0, 0, 0, 0, + }}, + {{ + 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, + 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, + 97, 0, 99, 101, 103, 105, 107, 109, 111, 0, + }}, + {{ + 113, 0, 115, 0, 117, 0, 119, 0, 121, 0, 123, + 0, 125, 0, 127, 0, 129, 0, 131, 0, 133, 0, + 135, 0, 137, 0, 139, 0, 141, 0, 143, 0, + }}, + {{ + 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, + 0, 157, 0, 159, 0, 161, 0, 163, 0, 165, 0, + 167, 0, 0, 169, 0, 171, 0, 173, 0, 175, + }}, + {{ + 0, 177, 0, 179, 0, 181, 0, 183, 0, 0, 185, + 0, 187, 0, 189, 0, 191, 0, 193, 0, 195, 0, + 197, 0, 199, 0, 201, 0, 203, 0, 205, 0, + }}, + {{ + 207, 0, 209, 0, 211, 0, 213, 0, 215, 0, 217, + 0, 219, 0, 221, 0, 223, 0, 225, 0, 227, 0, + 229, 0, 231, 233, 0, 235, 0, 237, 0, 0, + }}, + {{ + 0, 239, 241, 0, 243, 0, 245, 247, 0, 249, 251, + 253, 0, 0, 255, 257, 259, 261, 0, 263, 265, 0, + 267, 269, 271, 0, 0, 0, 273, 275, 0, 277, + }}, + {{ + 279, 0, 281, 0, 283, 0, 285, 287, 0, 289, 0, + 0, 291, 0, 293, 295, 0, 297, 299, 301, 0, 303, + 0, 305, 307, 0, 0, 0, 309, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 311, 313, 0, 315, 317, 0, 319, + 321, 0, 323, 0, 325, 0, 327, 0, 329, 0, 331, + 0, 333, 0, 335, 0, 337, 0, 0, 339, 0, + }}, + {{ + 341, 0, 343, 0, 345, 0, 347, 0, 349, 0, 351, + 0, 353, 0, 355, 0, 0, 357, 359, 0, 361, 0, + 363, 365, 367, 0, 369, 0, 371, 0, 373, 0, + }}, + {{ + 375, 0, 377, 0, 379, 0, 381, 0, 383, 0, 385, + 0, 387, 0, 389, 0, 391, 0, 393, 0, 395, 0, + 397, 0, 399, 0, 401, 0, 403, 0, 405, 0, + }}, + {{ + 0, 0, 407, 0, 409, 0, 411, 0, 413, 0, 415, + 0, 417, 0, 419, 0, 421, 0, 423, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 425, 0, 427, 429, 431, + 0, 433, 0, 435, 437, 0, 439, 441, 443, 445, 447, + 449, 451, 453, 455, 457, 459, 461, 463, 465, 467, + }}, + {{ + 469, 471, 0, 473, 477, 479, 481, 483, 485, 487, 489, + 491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 493, 0, 495, 0, 497, 0, + }}, + {{ + 499, 0, 501, 0, 503, 0, 505, 0, 507, 0, 509, + 0, 511, 0, 513, 0, 0, 0, 0, 0, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 517, 519, 521, 523, 525, 527, 529, 531, 533, 535, 537, + 539, 541, 543, 545, 547, 549, 551, 553, 555, 557, 559, + 561, 563, 565, 567, 569, 571, 573, 575, 577, 579, + }}, + {{ + 581, 583, 585, 587, 589, 591, 593, 595, 597, 599, 601, + 603, 605, 607, 609, 611, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 613, 0, 615, 0, 617, 0, 619, 0, 621, 0, 623, + 0, 625, 0, 627, 0, 629, 0, 631, 0, 633, 0, + 635, 0, 637, 0, 639, 0, 641, 0, 643, 0, + }}, + {{ + 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 647, 0, 649, 0, 651, 0, 653, 0, 655, 0, + 657, 0, 659, 0, 661, 0, 663, 0, 665, 0, + }}, + {{ + 667, 0, 669, 0, 671, 0, 673, 0, 675, 0, 677, + 0, 679, 0, 681, 0, 683, 0, 685, 0, 687, 0, + 689, 0, 691, 0, 693, 0, 695, 0, 697, 0, + }}, + {{ + 0, 699, 0, 701, 0, 0, 0, 703, 0, 0, 0, + 705, 0, 0, 0, 0, 707, 0, 709, 0, 711, 0, + 713, 0, 715, 0, 717, 0, 719, 0, 721, 0, + }}, + {{ + 723, 0, 725, 0, 727, 0, 729, 0, 731, 0, 733, + 0, 735, 0, 737, 0, 739, 0, 741, 0, 743, 0, + 0, 0, 745, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 747, 749, 751, 753, 755, + 757, 759, 761, 763, 765, 767, 769, 771, 773, 775, + }}, + {{ + 777, 779, 781, 783, 785, 787, 789, 791, 793, 795, 797, + 799, 801, 803, 805, 807, 809, 811, 813, 815, 817, 819, + 821, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 823, 0, 825, 0, 827, 0, 829, 0, 831, 0, 833, + 0, 835, 0, 837, 0, 839, 0, 841, 0, 843, 0, + 845, 0, 847, 0, 849, 0, 851, 0, 853, 0, + }}, + {{ + 855, 0, 857, 0, 859, 0, 861, 0, 863, 0, 865, + 0, 867, 0, 869, 0, 871, 0, 873, 0, 875, 0, + 877, 0, 879, 0, 881, 0, 883, 0, 885, 0, + }}, + {{ + 887, 0, 889, 0, 891, 0, 893, 0, 895, 0, 897, + 0, 899, 0, 901, 0, 903, 0, 905, 0, 907, 0, + 909, 0, 911, 0, 913, 0, 915, 0, 917, 0, + }}, + {{ + 919, 0, 921, 0, 923, 0, 925, 0, 927, 0, 929, + 0, 931, 0, 933, 0, 935, 0, 937, 0, 939, 0, + 941, 0, 943, 0, 945, 0, 947, 0, 949, 0, + }}, + {{ + 951, 0, 953, 0, 955, 0, 957, 0, 959, 0, 961, + 0, 963, 0, 965, 0, 967, 0, 969, 0, 971, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 973, 0, 975, 0, 977, 0, 979, 0, 981, 0, 983, + 0, 985, 0, 987, 0, 989, 0, 991, 0, 993, 0, + 995, 0, 997, 0, 999, 0, 1001, 0, 1003, 0, + }}, + {{ + 1005, 0, 1007, 0, 1009, 0, 1011, 0, 1013, 0, 1015, + 0, 1017, 0, 1019, 0, 1021, 0, 1023, 0, 1025, 0, + 1027, 0, 1029, 0, 1031, 0, 1033, 0, 1035, 0, + }}, + {{ + 1037, 0, 1039, 0, 1041, 0, 1043, 0, 1045, 0, 1047, + 0, 1049, 0, 1051, 0, 1053, 0, 1055, 0, 1057, 0, + 1059, 0, 1061, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1065, 1067, + 1069, 1071, 1073, 1075, 1077, 0, 0, 0, 0, 0, 0, + 0, 0, 1079, 1081, 1083, 1085, 1087, 1089, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1091, 1093, 1095, + 1097, 1099, 1101, 1103, 1105, 0, 0, 0, 0, 0, 0, + 0, 0, 1107, 1109, 1111, 1113, 1115, 1117, 1119, 1121, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1123, 1125, 1127, + 1129, 1131, 1133, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1135, 0, 1137, 0, 1139, 0, 1141, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1143, 1145, 1147, + 1149, 1151, 1153, 1155, 1157, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1159, 1163, 1167, + 1171, 1175, 1179, 1183, 1187, 0, 0, 0, 0, 0, 0, + 0, 0, 1191, 1195, 1199, 1203, 1207, 1211, 1215, 1219, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1223, 1227, 1231, + 1235, 1239, 1243, 1247, 1251, 0, 0, 0, 0, 0, 0, + 0, 0, 1255, 1257, 1259, 1261, 1263, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1267, 1269, 1271, + 1273, 1275, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1279, 1281, 1283, 1285, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 1287, 1289, 1291, + 1293, 1295, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1297, 1299, 1301, 1303, 1305, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 1309, 0, 0, 0, 1311, + 1313, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1315, 1317, 1319, 1321, 1323, 1325, 1327, 1329, 1331, 1333, 1335, + 1337, 1339, 1341, 1343, 1345, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1347, 1349, 1351, 1353, 1355, 1357, 1359, 1361, 1363, 1365, + }}, + {{ + 1367, 1369, 1371, 1373, 1375, 1377, 1379, 1381, 1383, 1385, 1387, + 1389, 1391, 1393, 1395, 1397, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1399, 1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415, 1417, + 1419, 1421, 1423, 1425, 1427, 1429, 1431, 1433, 1435, 1437, 1439, + 1441, 1443, 1445, 1447, 1449, 0, 0, 0, 0, 0, + }}, + {{ + 1451, 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471, + 1473, 1475, 1477, 1479, 1481, 1483, 1485, 1487, 1489, 1491, 1493, + 1495, 1497, 1499, 1501, 1503, 1505, 1507, 1509, 1511, 1513, + }}, + {{ + 1515, 1517, 1519, 1521, 1523, 1525, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; +static const unsigned long v310_toupper_seq[] = { + 0x00000000, 0x00000010, 0x80000041, 0x00000010, + 0x80000042, 0x00000010, 0x80000043, 0x00000010, + 0x80000044, 0x00000010, 0x80000045, 0x00000010, + 0x80000046, 0x00000010, 0x80000047, 0x00000010, + 0x80000048, 0x00000010, 0x80000049, 0x00000010, + 0x8000004a, 0x00000010, 0x8000004b, 0x00000010, + 0x8000004c, 0x00000010, 0x8000004d, 0x00000010, + 0x8000004e, 0x00000010, 0x8000004f, 0x00000010, + 0x80000050, 0x00000010, 0x80000051, 0x00000010, + 0x80000052, 0x00000010, 0x80000053, 0x00000010, + 0x80000054, 0x00000010, 0x80000055, 0x00000010, + 0x80000056, 0x00000010, 0x80000057, 0x00000010, + 0x80000058, 0x00000010, 0x80000059, 0x00000010, + 0x8000005a, 0x00000010, 0x8000039c, 0x00000010, + 0x00000053, 0x80000053, 0x00000010, 0x800000c0, + 0x00000010, 0x800000c1, 0x00000010, 0x800000c2, + 0x00000010, 0x800000c3, 0x00000010, 0x800000c4, + 0x00000010, 0x800000c5, 0x00000010, 0x800000c6, + 0x00000010, 0x800000c7, 0x00000010, 0x800000c8, + 0x00000010, 0x800000c9, 0x00000010, 0x800000ca, + 0x00000010, 0x800000cb, 0x00000010, 0x800000cc, + 0x00000010, 0x800000cd, 0x00000010, 0x800000ce, + 0x00000010, 0x800000cf, 0x00000010, 0x800000d0, + 0x00000010, 0x800000d1, 0x00000010, 0x800000d2, + 0x00000010, 0x800000d3, 0x00000010, 0x800000d4, + 0x00000010, 0x800000d5, 0x00000010, 0x800000d6, + 0x00000010, 0x800000d8, 0x00000010, 0x800000d9, + 0x00000010, 0x800000da, 0x00000010, 0x800000db, + 0x00000010, 0x800000dc, 0x00000010, 0x800000dd, + 0x00000010, 0x800000de, 0x00000010, 0x80000178, + 0x00000010, 0x80000100, 0x00000010, 0x80000102, + 0x00000010, 0x80000104, 0x00000010, 0x80000106, + 0x00000010, 0x80000108, 0x00000010, 0x8000010a, + 0x00000010, 0x8000010c, 0x00000010, 0x8000010e, + 0x00000010, 0x80000110, 0x00000010, 0x80000112, + 0x00000010, 0x80000114, 0x00000010, 0x80000116, + 0x00000010, 0x80000118, 0x00000010, 0x8000011a, + 0x00000010, 0x8000011c, 0x00000010, 0x8000011e, + 0x00000010, 0x80000120, 0x00000010, 0x80000122, + 0x00000010, 0x80000124, 0x00000010, 0x80000126, + 0x00000010, 0x80000128, 0x00000010, 0x8000012a, + 0x00000010, 0x8000012c, 0x00000010, 0x8000012e, + 0x00000010, 0x80000049, 0x00000010, 0x80000132, + 0x00000010, 0x80000134, 0x00000010, 0x80000136, + 0x00000010, 0x80000139, 0x00000010, 0x8000013b, + 0x00000010, 0x8000013d, 0x00000010, 0x8000013f, + 0x00000010, 0x80000141, 0x00000010, 0x80000143, + 0x00000010, 0x80000145, 0x00000010, 0x80000147, + 0x00000010, 0x000002bc, 0x8000004e, 0x00000010, + 0x8000014a, 0x00000010, 0x8000014c, 0x00000010, + 0x8000014e, 0x00000010, 0x80000150, 0x00000010, + 0x80000152, 0x00000010, 0x80000154, 0x00000010, + 0x80000156, 0x00000010, 0x80000158, 0x00000010, + 0x8000015a, 0x00000010, 0x8000015c, 0x00000010, + 0x8000015e, 0x00000010, 0x80000160, 0x00000010, + 0x80000162, 0x00000010, 0x80000164, 0x00000010, + 0x80000166, 0x00000010, 0x80000168, 0x00000010, + 0x8000016a, 0x00000010, 0x8000016c, 0x00000010, + 0x8000016e, 0x00000010, 0x80000170, 0x00000010, + 0x80000172, 0x00000010, 0x80000174, 0x00000010, + 0x80000176, 0x00000010, 0x80000179, 0x00000010, + 0x8000017b, 0x00000010, 0x8000017d, 0x00000010, + 0x80000053, 0x00000010, 0x80000182, 0x00000010, + 0x80000184, 0x00000010, 0x80000187, 0x00000010, + 0x8000018b, 0x00000010, 0x80000191, 0x00000010, + 0x800001f6, 0x00000010, 0x80000198, 0x00000010, + 0x800001a0, 0x00000010, 0x800001a2, 0x00000010, + 0x800001a4, 0x00000010, 0x800001a7, 0x00000010, + 0x800001ac, 0x00000010, 0x800001af, 0x00000010, + 0x800001b3, 0x00000010, 0x800001b5, 0x00000010, + 0x800001b8, 0x00000010, 0x800001bc, 0x00000010, + 0x800001f7, 0x00000010, 0x800001c4, 0x00000010, + 0x800001c4, 0x00000010, 0x800001c7, 0x00000010, + 0x800001c7, 0x00000010, 0x800001ca, 0x00000010, + 0x800001ca, 0x00000010, 0x800001cd, 0x00000010, + 0x800001cf, 0x00000010, 0x800001d1, 0x00000010, + 0x800001d3, 0x00000010, 0x800001d5, 0x00000010, + 0x800001d7, 0x00000010, 0x800001d9, 0x00000010, + 0x800001db, 0x00000010, 0x8000018e, 0x00000010, + 0x800001de, 0x00000010, 0x800001e0, 0x00000010, + 0x800001e2, 0x00000010, 0x800001e4, 0x00000010, + 0x800001e6, 0x00000010, 0x800001e8, 0x00000010, + 0x800001ea, 0x00000010, 0x800001ec, 0x00000010, + 0x800001ee, 0x00000010, 0x0000004a, 0x8000030c, + 0x00000010, 0x800001f1, 0x00000010, 0x800001f1, + 0x00000010, 0x800001f4, 0x00000010, 0x800001f8, + 0x00000010, 0x800001fa, 0x00000010, 0x800001fc, + 0x00000010, 0x800001fe, 0x00000010, 0x80000200, + 0x00000010, 0x80000202, 0x00000010, 0x80000204, + 0x00000010, 0x80000206, 0x00000010, 0x80000208, + 0x00000010, 0x8000020a, 0x00000010, 0x8000020c, + 0x00000010, 0x8000020e, 0x00000010, 0x80000210, + 0x00000010, 0x80000212, 0x00000010, 0x80000214, + 0x00000010, 0x80000216, 0x00000010, 0x80000218, + 0x00000010, 0x8000021a, 0x00000010, 0x8000021c, + 0x00000010, 0x8000021e, 0x00000010, 0x80000222, + 0x00000010, 0x80000224, 0x00000010, 0x80000226, + 0x00000010, 0x80000228, 0x00000010, 0x8000022a, + 0x00000010, 0x8000022c, 0x00000010, 0x8000022e, + 0x00000010, 0x80000230, 0x00000010, 0x80000232, + 0x00000010, 0x80000181, 0x00000010, 0x80000186, + 0x00000010, 0x80000189, 0x00000010, 0x8000018a, + 0x00000010, 0x8000018f, 0x00000010, 0x80000190, + 0x00000010, 0x80000193, 0x00000010, 0x80000194, + 0x00000010, 0x80000197, 0x00000010, 0x80000196, + 0x00000010, 0x8000019c, 0x00000010, 0x8000019d, + 0x00000010, 0x8000019f, 0x00000010, 0x800001a6, + 0x00000010, 0x800001a9, 0x00000010, 0x800001ae, + 0x00000010, 0x800001b1, 0x00000010, 0x800001b2, + 0x00000010, 0x800001b7, 0x00000010, 0x80000399, + 0x00000010, 0x00000399, 0x00000308, 0x80000301, + 0x00000010, 0x80000386, 0x00000010, 0x80000388, + 0x00000010, 0x80000389, 0x00000010, 0x8000038a, + 0x00000010, 0x000003a5, 0x00000308, 0x80000301, + 0x00000010, 0x80000391, 0x00000010, 0x80000392, + 0x00000010, 0x80000393, 0x00000010, 0x80000394, + 0x00000010, 0x80000395, 0x00000010, 0x80000396, + 0x00000010, 0x80000397, 0x00000010, 0x80000398, + 0x00000010, 0x80000399, 0x00000010, 0x8000039a, + 0x00000010, 0x8000039b, 0x00000010, 0x8000039c, + 0x00000010, 0x8000039d, 0x00000010, 0x8000039e, + 0x00000010, 0x8000039f, 0x00000010, 0x800003a0, + 0x00000010, 0x800003a1, 0x00000010, 0x800003a3, + 0x00000010, 0x800003a3, 0x00000010, 0x800003a4, + 0x00000010, 0x800003a5, 0x00000010, 0x800003a6, + 0x00000010, 0x800003a7, 0x00000010, 0x800003a8, + 0x00000010, 0x800003a9, 0x00000010, 0x800003aa, + 0x00000010, 0x800003ab, 0x00000010, 0x8000038c, + 0x00000010, 0x8000038e, 0x00000010, 0x8000038f, + 0x00000010, 0x80000392, 0x00000010, 0x80000398, + 0x00000010, 0x800003a6, 0x00000010, 0x800003a0, + 0x00000010, 0x800003da, 0x00000010, 0x800003dc, + 0x00000010, 0x800003de, 0x00000010, 0x800003e0, + 0x00000010, 0x800003e2, 0x00000010, 0x800003e4, + 0x00000010, 0x800003e6, 0x00000010, 0x800003e8, + 0x00000010, 0x800003ea, 0x00000010, 0x800003ec, + 0x00000010, 0x800003ee, 0x00000010, 0x8000039a, + 0x00000010, 0x800003a1, 0x00000010, 0x800003a3, + 0x00000010, 0x80000395, 0x00000010, 0x80000410, + 0x00000010, 0x80000411, 0x00000010, 0x80000412, + 0x00000010, 0x80000413, 0x00000010, 0x80000414, + 0x00000010, 0x80000415, 0x00000010, 0x80000416, + 0x00000010, 0x80000417, 0x00000010, 0x80000418, + 0x00000010, 0x80000419, 0x00000010, 0x8000041a, + 0x00000010, 0x8000041b, 0x00000010, 0x8000041c, + 0x00000010, 0x8000041d, 0x00000010, 0x8000041e, + 0x00000010, 0x8000041f, 0x00000010, 0x80000420, + 0x00000010, 0x80000421, 0x00000010, 0x80000422, + 0x00000010, 0x80000423, 0x00000010, 0x80000424, + 0x00000010, 0x80000425, 0x00000010, 0x80000426, + 0x00000010, 0x80000427, 0x00000010, 0x80000428, + 0x00000010, 0x80000429, 0x00000010, 0x8000042a, + 0x00000010, 0x8000042b, 0x00000010, 0x8000042c, + 0x00000010, 0x8000042d, 0x00000010, 0x8000042e, + 0x00000010, 0x8000042f, 0x00000010, 0x80000400, + 0x00000010, 0x80000401, 0x00000010, 0x80000402, + 0x00000010, 0x80000403, 0x00000010, 0x80000404, + 0x00000010, 0x80000405, 0x00000010, 0x80000406, + 0x00000010, 0x80000407, 0x00000010, 0x80000408, + 0x00000010, 0x80000409, 0x00000010, 0x8000040a, + 0x00000010, 0x8000040b, 0x00000010, 0x8000040c, + 0x00000010, 0x8000040d, 0x00000010, 0x8000040e, + 0x00000010, 0x8000040f, 0x00000010, 0x80000460, + 0x00000010, 0x80000462, 0x00000010, 0x80000464, + 0x00000010, 0x80000466, 0x00000010, 0x80000468, + 0x00000010, 0x8000046a, 0x00000010, 0x8000046c, + 0x00000010, 0x8000046e, 0x00000010, 0x80000470, + 0x00000010, 0x80000472, 0x00000010, 0x80000474, + 0x00000010, 0x80000476, 0x00000010, 0x80000478, + 0x00000010, 0x8000047a, 0x00000010, 0x8000047c, + 0x00000010, 0x8000047e, 0x00000010, 0x80000480, + 0x00000010, 0x8000048c, 0x00000010, 0x8000048e, + 0x00000010, 0x80000490, 0x00000010, 0x80000492, + 0x00000010, 0x80000494, 0x00000010, 0x80000496, + 0x00000010, 0x80000498, 0x00000010, 0x8000049a, + 0x00000010, 0x8000049c, 0x00000010, 0x8000049e, + 0x00000010, 0x800004a0, 0x00000010, 0x800004a2, + 0x00000010, 0x800004a4, 0x00000010, 0x800004a6, + 0x00000010, 0x800004a8, 0x00000010, 0x800004aa, + 0x00000010, 0x800004ac, 0x00000010, 0x800004ae, + 0x00000010, 0x800004b0, 0x00000010, 0x800004b2, + 0x00000010, 0x800004b4, 0x00000010, 0x800004b6, + 0x00000010, 0x800004b8, 0x00000010, 0x800004ba, + 0x00000010, 0x800004bc, 0x00000010, 0x800004be, + 0x00000010, 0x800004c1, 0x00000010, 0x800004c3, + 0x00000010, 0x800004c7, 0x00000010, 0x800004cb, + 0x00000010, 0x800004d0, 0x00000010, 0x800004d2, + 0x00000010, 0x800004d4, 0x00000010, 0x800004d6, + 0x00000010, 0x800004d8, 0x00000010, 0x800004da, + 0x00000010, 0x800004dc, 0x00000010, 0x800004de, + 0x00000010, 0x800004e0, 0x00000010, 0x800004e2, + 0x00000010, 0x800004e4, 0x00000010, 0x800004e6, + 0x00000010, 0x800004e8, 0x00000010, 0x800004ea, + 0x00000010, 0x800004ec, 0x00000010, 0x800004ee, + 0x00000010, 0x800004f0, 0x00000010, 0x800004f2, + 0x00000010, 0x800004f4, 0x00000010, 0x800004f8, + 0x00000010, 0x80000531, 0x00000010, 0x80000532, + 0x00000010, 0x80000533, 0x00000010, 0x80000534, + 0x00000010, 0x80000535, 0x00000010, 0x80000536, + 0x00000010, 0x80000537, 0x00000010, 0x80000538, + 0x00000010, 0x80000539, 0x00000010, 0x8000053a, + 0x00000010, 0x8000053b, 0x00000010, 0x8000053c, + 0x00000010, 0x8000053d, 0x00000010, 0x8000053e, + 0x00000010, 0x8000053f, 0x00000010, 0x80000540, + 0x00000010, 0x80000541, 0x00000010, 0x80000542, + 0x00000010, 0x80000543, 0x00000010, 0x80000544, + 0x00000010, 0x80000545, 0x00000010, 0x80000546, + 0x00000010, 0x80000547, 0x00000010, 0x80000548, + 0x00000010, 0x80000549, 0x00000010, 0x8000054a, + 0x00000010, 0x8000054b, 0x00000010, 0x8000054c, + 0x00000010, 0x8000054d, 0x00000010, 0x8000054e, + 0x00000010, 0x8000054f, 0x00000010, 0x80000550, + 0x00000010, 0x80000551, 0x00000010, 0x80000552, + 0x00000010, 0x80000553, 0x00000010, 0x80000554, + 0x00000010, 0x80000555, 0x00000010, 0x80000556, + 0x00000010, 0x00000535, 0x80000552, 0x00000010, + 0x80001e00, 0x00000010, 0x80001e02, 0x00000010, + 0x80001e04, 0x00000010, 0x80001e06, 0x00000010, + 0x80001e08, 0x00000010, 0x80001e0a, 0x00000010, + 0x80001e0c, 0x00000010, 0x80001e0e, 0x00000010, + 0x80001e10, 0x00000010, 0x80001e12, 0x00000010, + 0x80001e14, 0x00000010, 0x80001e16, 0x00000010, + 0x80001e18, 0x00000010, 0x80001e1a, 0x00000010, + 0x80001e1c, 0x00000010, 0x80001e1e, 0x00000010, + 0x80001e20, 0x00000010, 0x80001e22, 0x00000010, + 0x80001e24, 0x00000010, 0x80001e26, 0x00000010, + 0x80001e28, 0x00000010, 0x80001e2a, 0x00000010, + 0x80001e2c, 0x00000010, 0x80001e2e, 0x00000010, + 0x80001e30, 0x00000010, 0x80001e32, 0x00000010, + 0x80001e34, 0x00000010, 0x80001e36, 0x00000010, + 0x80001e38, 0x00000010, 0x80001e3a, 0x00000010, + 0x80001e3c, 0x00000010, 0x80001e3e, 0x00000010, + 0x80001e40, 0x00000010, 0x80001e42, 0x00000010, + 0x80001e44, 0x00000010, 0x80001e46, 0x00000010, + 0x80001e48, 0x00000010, 0x80001e4a, 0x00000010, + 0x80001e4c, 0x00000010, 0x80001e4e, 0x00000010, + 0x80001e50, 0x00000010, 0x80001e52, 0x00000010, + 0x80001e54, 0x00000010, 0x80001e56, 0x00000010, + 0x80001e58, 0x00000010, 0x80001e5a, 0x00000010, + 0x80001e5c, 0x00000010, 0x80001e5e, 0x00000010, + 0x80001e60, 0x00000010, 0x80001e62, 0x00000010, + 0x80001e64, 0x00000010, 0x80001e66, 0x00000010, + 0x80001e68, 0x00000010, 0x80001e6a, 0x00000010, + 0x80001e6c, 0x00000010, 0x80001e6e, 0x00000010, + 0x80001e70, 0x00000010, 0x80001e72, 0x00000010, + 0x80001e74, 0x00000010, 0x80001e76, 0x00000010, + 0x80001e78, 0x00000010, 0x80001e7a, 0x00000010, + 0x80001e7c, 0x00000010, 0x80001e7e, 0x00000010, + 0x80001e80, 0x00000010, 0x80001e82, 0x00000010, + 0x80001e84, 0x00000010, 0x80001e86, 0x00000010, + 0x80001e88, 0x00000010, 0x80001e8a, 0x00000010, + 0x80001e8c, 0x00000010, 0x80001e8e, 0x00000010, + 0x80001e90, 0x00000010, 0x80001e92, 0x00000010, + 0x80001e94, 0x00000010, 0x00000048, 0x80000331, + 0x00000010, 0x00000054, 0x80000308, 0x00000010, + 0x00000057, 0x8000030a, 0x00000010, 0x00000059, + 0x8000030a, 0x00000010, 0x00000041, 0x800002be, + 0x00000010, 0x80001e60, 0x00000010, 0x80001ea0, + 0x00000010, 0x80001ea2, 0x00000010, 0x80001ea4, + 0x00000010, 0x80001ea6, 0x00000010, 0x80001ea8, + 0x00000010, 0x80001eaa, 0x00000010, 0x80001eac, + 0x00000010, 0x80001eae, 0x00000010, 0x80001eb0, + 0x00000010, 0x80001eb2, 0x00000010, 0x80001eb4, + 0x00000010, 0x80001eb6, 0x00000010, 0x80001eb8, + 0x00000010, 0x80001eba, 0x00000010, 0x80001ebc, + 0x00000010, 0x80001ebe, 0x00000010, 0x80001ec0, + 0x00000010, 0x80001ec2, 0x00000010, 0x80001ec4, + 0x00000010, 0x80001ec6, 0x00000010, 0x80001ec8, + 0x00000010, 0x80001eca, 0x00000010, 0x80001ecc, + 0x00000010, 0x80001ece, 0x00000010, 0x80001ed0, + 0x00000010, 0x80001ed2, 0x00000010, 0x80001ed4, + 0x00000010, 0x80001ed6, 0x00000010, 0x80001ed8, + 0x00000010, 0x80001eda, 0x00000010, 0x80001edc, + 0x00000010, 0x80001ede, 0x00000010, 0x80001ee0, + 0x00000010, 0x80001ee2, 0x00000010, 0x80001ee4, + 0x00000010, 0x80001ee6, 0x00000010, 0x80001ee8, + 0x00000010, 0x80001eea, 0x00000010, 0x80001eec, + 0x00000010, 0x80001eee, 0x00000010, 0x80001ef0, + 0x00000010, 0x80001ef2, 0x00000010, 0x80001ef4, + 0x00000010, 0x80001ef6, 0x00000010, 0x80001ef8, + 0x00000010, 0x80001f08, 0x00000010, 0x80001f09, + 0x00000010, 0x80001f0a, 0x00000010, 0x80001f0b, + 0x00000010, 0x80001f0c, 0x00000010, 0x80001f0d, + 0x00000010, 0x80001f0e, 0x00000010, 0x80001f0f, + 0x00000010, 0x80001f18, 0x00000010, 0x80001f19, + 0x00000010, 0x80001f1a, 0x00000010, 0x80001f1b, + 0x00000010, 0x80001f1c, 0x00000010, 0x80001f1d, + 0x00000010, 0x80001f28, 0x00000010, 0x80001f29, + 0x00000010, 0x80001f2a, 0x00000010, 0x80001f2b, + 0x00000010, 0x80001f2c, 0x00000010, 0x80001f2d, + 0x00000010, 0x80001f2e, 0x00000010, 0x80001f2f, + 0x00000010, 0x80001f38, 0x00000010, 0x80001f39, + 0x00000010, 0x80001f3a, 0x00000010, 0x80001f3b, + 0x00000010, 0x80001f3c, 0x00000010, 0x80001f3d, + 0x00000010, 0x80001f3e, 0x00000010, 0x80001f3f, + 0x00000010, 0x80001f48, 0x00000010, 0x80001f49, + 0x00000010, 0x80001f4a, 0x00000010, 0x80001f4b, + 0x00000010, 0x80001f4c, 0x00000010, 0x80001f4d, + 0x00000010, 0x000003a5, 0x80000313, 0x00000010, + 0x80001f59, 0x00000010, 0x000003a5, 0x00000313, + 0x80000300, 0x00000010, 0x80001f5b, 0x00000010, + 0x000003a5, 0x00000313, 0x80000301, 0x00000010, + 0x80001f5d, 0x00000010, 0x000003a5, 0x00000313, + 0x80000342, 0x00000010, 0x80001f5f, 0x00000010, + 0x80001f68, 0x00000010, 0x80001f69, 0x00000010, + 0x80001f6a, 0x00000010, 0x80001f6b, 0x00000010, + 0x80001f6c, 0x00000010, 0x80001f6d, 0x00000010, + 0x80001f6e, 0x00000010, 0x80001f6f, 0x00000010, + 0x80001fba, 0x00000010, 0x80001fbb, 0x00000010, + 0x80001fc8, 0x00000010, 0x80001fc9, 0x00000010, + 0x80001fca, 0x00000010, 0x80001fcb, 0x00000010, + 0x80001fda, 0x00000010, 0x80001fdb, 0x00000010, + 0x80001ff8, 0x00000010, 0x80001ff9, 0x00000010, + 0x80001fea, 0x00000010, 0x80001feb, 0x00000010, + 0x80001ffa, 0x00000010, 0x80001ffb, 0x00000000, + 0x00001f08, 0x80000399, 0x00000010, 0x80001f88, + 0x00000000, 0x00001f09, 0x80000399, 0x00000010, + 0x80001f89, 0x00000000, 0x00001f0a, 0x80000399, + 0x00000010, 0x80001f8a, 0x00000000, 0x00001f0b, + 0x80000399, 0x00000010, 0x80001f8b, 0x00000000, + 0x00001f0c, 0x80000399, 0x00000010, 0x80001f8c, + 0x00000000, 0x00001f0d, 0x80000399, 0x00000010, + 0x80001f8d, 0x00000000, 0x00001f0e, 0x80000399, + 0x00000010, 0x80001f8e, 0x00000000, 0x00001f0f, + 0x80000399, 0x00000010, 0x80001f8f, 0x00000010, + 0x00001f08, 0x80000399, 0x00000010, 0x00001f09, + 0x80000399, 0x00000010, 0x00001f0a, 0x80000399, + 0x00000010, 0x00001f0b, 0x80000399, 0x00000010, + 0x00001f0c, 0x80000399, 0x00000010, 0x00001f0d, + 0x80000399, 0x00000010, 0x00001f0e, 0x80000399, + 0x00000010, 0x00001f0f, 0x80000399, 0x00000000, + 0x00001f28, 0x80000399, 0x00000010, 0x80001f98, + 0x00000000, 0x00001f29, 0x80000399, 0x00000010, + 0x80001f99, 0x00000000, 0x00001f2a, 0x80000399, + 0x00000010, 0x80001f9a, 0x00000000, 0x00001f2b, + 0x80000399, 0x00000010, 0x80001f9b, 0x00000000, + 0x00001f2c, 0x80000399, 0x00000010, 0x80001f9c, + 0x00000000, 0x00001f2d, 0x80000399, 0x00000010, + 0x80001f9d, 0x00000000, 0x00001f2e, 0x80000399, + 0x00000010, 0x80001f9e, 0x00000000, 0x00001f2f, + 0x80000399, 0x00000010, 0x80001f9f, 0x00000010, + 0x00001f28, 0x80000399, 0x00000010, 0x00001f29, + 0x80000399, 0x00000010, 0x00001f2a, 0x80000399, + 0x00000010, 0x00001f2b, 0x80000399, 0x00000010, + 0x00001f2c, 0x80000399, 0x00000010, 0x00001f2d, + 0x80000399, 0x00000010, 0x00001f2e, 0x80000399, + 0x00000010, 0x00001f2f, 0x80000399, 0x00000000, + 0x00001f68, 0x80000399, 0x00000010, 0x80001fa8, + 0x00000000, 0x00001f69, 0x80000399, 0x00000010, + 0x80001fa9, 0x00000000, 0x00001f6a, 0x80000399, + 0x00000010, 0x80001faa, 0x00000000, 0x00001f6b, + 0x80000399, 0x00000010, 0x80001fab, 0x00000000, + 0x00001f6c, 0x80000399, 0x00000010, 0x80001fac, + 0x00000000, 0x00001f6d, 0x80000399, 0x00000010, + 0x80001fad, 0x00000000, 0x00001f6e, 0x80000399, + 0x00000010, 0x80001fae, 0x00000000, 0x00001f6f, + 0x80000399, 0x00000010, 0x80001faf, 0x00000010, + 0x00001f68, 0x80000399, 0x00000010, 0x00001f69, + 0x80000399, 0x00000010, 0x00001f6a, 0x80000399, + 0x00000010, 0x00001f6b, 0x80000399, 0x00000010, + 0x00001f6c, 0x80000399, 0x00000010, 0x00001f6d, + 0x80000399, 0x00000010, 0x00001f6e, 0x80000399, + 0x00000010, 0x00001f6f, 0x80000399, 0x00000010, + 0x80001fb8, 0x00000010, 0x80001fb9, 0x00000010, + 0x00001fba, 0x80000399, 0x00000000, 0x00000391, + 0x80000399, 0x00000010, 0x80001fbc, 0x00000010, + 0x00000386, 0x80000399, 0x00000010, 0x00000391, + 0x80000342, 0x00000010, 0x00000391, 0x00000342, + 0x80000399, 0x00000010, 0x00000391, 0x80000399, + 0x00000010, 0x80000399, 0x00000010, 0x00001fca, + 0x80000399, 0x00000000, 0x00000397, 0x80000399, + 0x00000010, 0x80001fcc, 0x00000010, 0x00000389, + 0x80000399, 0x00000010, 0x00000397, 0x80000342, + 0x00000010, 0x00000397, 0x00000342, 0x80000399, + 0x00000010, 0x00000397, 0x80000399, 0x00000010, + 0x80001fd8, 0x00000010, 0x80001fd9, 0x00000010, + 0x00000399, 0x00000308, 0x80000300, 0x00000010, + 0x00000399, 0x00000308, 0x80000301, 0x00000010, + 0x00000399, 0x80000342, 0x00000010, 0x00000399, + 0x00000308, 0x80000342, 0x00000010, 0x80001fe8, + 0x00000010, 0x80001fe9, 0x00000010, 0x000003a5, + 0x00000308, 0x80000300, 0x00000010, 0x000003a5, + 0x00000308, 0x80000301, 0x00000010, 0x000003a1, + 0x80000313, 0x00000010, 0x80001fec, 0x00000010, + 0x000003a5, 0x80000342, 0x00000010, 0x000003a5, + 0x00000308, 0x80000342, 0x00000010, 0x00001ffa, + 0x80000399, 0x00000000, 0x000003a9, 0x80000399, + 0x00000010, 0x80001ffc, 0x00000010, 0x0000038f, + 0x80000399, 0x00000010, 0x000003a9, 0x80000342, + 0x00000010, 0x000003a9, 0x00000342, 0x80000399, + 0x00000010, 0x000003a9, 0x80000399, 0x00000010, + 0x80002160, 0x00000010, 0x80002161, 0x00000010, + 0x80002162, 0x00000010, 0x80002163, 0x00000010, + 0x80002164, 0x00000010, 0x80002165, 0x00000010, + 0x80002166, 0x00000010, 0x80002167, 0x00000010, + 0x80002168, 0x00000010, 0x80002169, 0x00000010, + 0x8000216a, 0x00000010, 0x8000216b, 0x00000010, + 0x8000216c, 0x00000010, 0x8000216d, 0x00000010, + 0x8000216e, 0x00000010, 0x8000216f, 0x00000010, + 0x800024b6, 0x00000010, 0x800024b7, 0x00000010, + 0x800024b8, 0x00000010, 0x800024b9, 0x00000010, + 0x800024ba, 0x00000010, 0x800024bb, 0x00000010, + 0x800024bc, 0x00000010, 0x800024bd, 0x00000010, + 0x800024be, 0x00000010, 0x800024bf, 0x00000010, + 0x800024c0, 0x00000010, 0x800024c1, 0x00000010, + 0x800024c2, 0x00000010, 0x800024c3, 0x00000010, + 0x800024c4, 0x00000010, 0x800024c5, 0x00000010, + 0x800024c6, 0x00000010, 0x800024c7, 0x00000010, + 0x800024c8, 0x00000010, 0x800024c9, 0x00000010, + 0x800024ca, 0x00000010, 0x800024cb, 0x00000010, + 0x800024cc, 0x00000010, 0x800024cd, 0x00000010, + 0x800024ce, 0x00000010, 0x800024cf, 0x00000010, + 0x00000046, 0x80000046, 0x00000010, 0x00000046, + 0x80000049, 0x00000010, 0x00000046, 0x8000004c, + 0x00000010, 0x00000046, 0x00000046, 0x80000049, + 0x00000010, 0x00000046, 0x00000046, 0x8000004c, + 0x00000010, 0x00000053, 0x80000054, 0x00000010, + 0x00000053, 0x80000054, 0x00000010, 0x00000544, + 0x80000546, 0x00000010, 0x00000544, 0x80000535, + 0x00000010, 0x00000544, 0x8000053b, 0x00000010, + 0x0000054e, 0x80000546, 0x00000010, 0x00000544, + 0x8000053d, 0x00000010, 0x8000ff21, 0x00000010, + 0x8000ff22, 0x00000010, 0x8000ff23, 0x00000010, + 0x8000ff24, 0x00000010, 0x8000ff25, 0x00000010, + 0x8000ff26, 0x00000010, 0x8000ff27, 0x00000010, + 0x8000ff28, 0x00000010, 0x8000ff29, 0x00000010, + 0x8000ff2a, 0x00000010, 0x8000ff2b, 0x00000010, + 0x8000ff2c, 0x00000010, 0x8000ff2d, 0x00000010, + 0x8000ff2e, 0x00000010, 0x8000ff2f, 0x00000010, + 0x8000ff30, 0x00000010, 0x8000ff31, 0x00000010, + 0x8000ff32, 0x00000010, 0x8000ff33, 0x00000010, + 0x8000ff34, 0x00000010, 0x8000ff35, 0x00000010, + 0x8000ff36, 0x00000010, 0x8000ff37, 0x00000010, + 0x8000ff38, 0x00000010, 0x8000ff39, 0x00000010, + 0x8000ff3a, 0x00000010, 0x80010400, 0x00000010, + 0x80010401, 0x00000010, 0x80010402, 0x00000010, + 0x80010403, 0x00000010, 0x80010404, 0x00000010, + 0x80010405, 0x00000010, 0x80010406, 0x00000010, + 0x80010407, 0x00000010, 0x80010408, 0x00000010, + 0x80010409, 0x00000010, 0x8001040a, 0x00000010, + 0x8001040b, 0x00000010, 0x8001040c, 0x00000010, + 0x8001040d, 0x00000010, 0x8001040e, 0x00000010, + 0x8001040f, 0x00000010, 0x80010410, 0x00000010, + 0x80010411, 0x00000010, 0x80010412, 0x00000010, + 0x80010413, 0x00000010, 0x80010414, 0x00000010, + 0x80010415, 0x00000010, 0x80010416, 0x00000010, + 0x80010417, 0x00000010, 0x80010418, 0x00000010, + 0x80010419, 0x00000010, 0x8001041a, 0x00000010, + 0x8001041b, 0x00000010, 0x8001041c, 0x00000010, + 0x8001041d, 0x00000010, 0x8001041e, 0x00000010, + 0x8001041f, 0x00000010, 0x80010420, 0x00000010, + 0x80010421, 0x00000010, 0x80010422, 0x00000010, + 0x80010423, 0x00000010, 0x80010424, 0x00000010, + 0x80010425, +}; + +static const unsigned long v310_tolower_seq[] = { + 0x00000000, 0x00000010, 0x80000061, 0x00000010, + 0x80000062, 0x00000010, 0x80000063, 0x00000010, + 0x80000064, 0x00000010, 0x80000065, 0x00000010, + 0x80000066, 0x00000010, 0x80000067, 0x00000010, + 0x80000068, 0x00000010, 0x80000069, 0x00000010, + 0x8000006a, 0x00000010, 0x8000006b, 0x00000010, + 0x8000006c, 0x00000010, 0x8000006d, 0x00000010, + 0x8000006e, 0x00000010, 0x8000006f, 0x00000010, + 0x80000070, 0x00000010, 0x80000071, 0x00000010, + 0x80000072, 0x00000010, 0x80000073, 0x00000010, + 0x80000074, 0x00000010, 0x80000075, 0x00000010, + 0x80000076, 0x00000010, 0x80000077, 0x00000010, + 0x80000078, 0x00000010, 0x80000079, 0x00000010, + 0x8000007a, 0x00000010, 0x800000e0, 0x00000010, + 0x800000e1, 0x00000010, 0x800000e2, 0x00000010, + 0x800000e3, 0x00000010, 0x800000e4, 0x00000010, + 0x800000e5, 0x00000010, 0x800000e6, 0x00000010, + 0x800000e7, 0x00000010, 0x800000e8, 0x00000010, + 0x800000e9, 0x00000010, 0x800000ea, 0x00000010, + 0x800000eb, 0x00000010, 0x800000ec, 0x00000010, + 0x800000ed, 0x00000010, 0x800000ee, 0x00000010, + 0x800000ef, 0x00000010, 0x800000f0, 0x00000010, + 0x800000f1, 0x00000010, 0x800000f2, 0x00000010, + 0x800000f3, 0x00000010, 0x800000f4, 0x00000010, + 0x800000f5, 0x00000010, 0x800000f6, 0x00000010, + 0x800000f8, 0x00000010, 0x800000f9, 0x00000010, + 0x800000fa, 0x00000010, 0x800000fb, 0x00000010, + 0x800000fc, 0x00000010, 0x800000fd, 0x00000010, + 0x800000fe, 0x00000010, 0x80000101, 0x00000010, + 0x80000103, 0x00000010, 0x80000105, 0x00000010, + 0x80000107, 0x00000010, 0x80000109, 0x00000010, + 0x8000010b, 0x00000010, 0x8000010d, 0x00000010, + 0x8000010f, 0x00000010, 0x80000111, 0x00000010, + 0x80000113, 0x00000010, 0x80000115, 0x00000010, + 0x80000117, 0x00000010, 0x80000119, 0x00000010, + 0x8000011b, 0x00000010, 0x8000011d, 0x00000010, + 0x8000011f, 0x00000010, 0x80000121, 0x00000010, + 0x80000123, 0x00000010, 0x80000125, 0x00000010, + 0x80000127, 0x00000010, 0x80000129, 0x00000010, + 0x8000012b, 0x00000010, 0x8000012d, 0x00000010, + 0x8000012f, 0x00000010, 0x80000069, 0x00000010, + 0x80000133, 0x00000010, 0x80000135, 0x00000010, + 0x80000137, 0x00000010, 0x8000013a, 0x00000010, + 0x8000013c, 0x00000010, 0x8000013e, 0x00000010, + 0x80000140, 0x00000010, 0x80000142, 0x00000010, + 0x80000144, 0x00000010, 0x80000146, 0x00000010, + 0x80000148, 0x00000010, 0x8000014b, 0x00000010, + 0x8000014d, 0x00000010, 0x8000014f, 0x00000010, + 0x80000151, 0x00000010, 0x80000153, 0x00000010, + 0x80000155, 0x00000010, 0x80000157, 0x00000010, + 0x80000159, 0x00000010, 0x8000015b, 0x00000010, + 0x8000015d, 0x00000010, 0x8000015f, 0x00000010, + 0x80000161, 0x00000010, 0x80000163, 0x00000010, + 0x80000165, 0x00000010, 0x80000167, 0x00000010, + 0x80000169, 0x00000010, 0x8000016b, 0x00000010, + 0x8000016d, 0x00000010, 0x8000016f, 0x00000010, + 0x80000171, 0x00000010, 0x80000173, 0x00000010, + 0x80000175, 0x00000010, 0x80000177, 0x00000010, + 0x800000ff, 0x00000010, 0x8000017a, 0x00000010, + 0x8000017c, 0x00000010, 0x8000017e, 0x00000010, + 0x80000253, 0x00000010, 0x80000183, 0x00000010, + 0x80000185, 0x00000010, 0x80000254, 0x00000010, + 0x80000188, 0x00000010, 0x80000256, 0x00000010, + 0x80000257, 0x00000010, 0x8000018c, 0x00000010, + 0x800001dd, 0x00000010, 0x80000259, 0x00000010, + 0x8000025b, 0x00000010, 0x80000192, 0x00000010, + 0x80000260, 0x00000010, 0x80000263, 0x00000010, + 0x80000269, 0x00000010, 0x80000268, 0x00000010, + 0x80000199, 0x00000010, 0x8000026f, 0x00000010, + 0x80000272, 0x00000010, 0x80000275, 0x00000010, + 0x800001a1, 0x00000010, 0x800001a3, 0x00000010, + 0x800001a5, 0x00000010, 0x80000280, 0x00000010, + 0x800001a8, 0x00000010, 0x80000283, 0x00000010, + 0x800001ad, 0x00000010, 0x80000288, 0x00000010, + 0x800001b0, 0x00000010, 0x8000028a, 0x00000010, + 0x8000028b, 0x00000010, 0x800001b4, 0x00000010, + 0x800001b6, 0x00000010, 0x80000292, 0x00000010, + 0x800001b9, 0x00000010, 0x800001bd, 0x00000010, + 0x800001c6, 0x00000010, 0x800001c6, 0x00000010, + 0x800001c9, 0x00000010, 0x800001c9, 0x00000010, + 0x800001cc, 0x00000010, 0x800001cc, 0x00000010, + 0x800001ce, 0x00000010, 0x800001d0, 0x00000010, + 0x800001d2, 0x00000010, 0x800001d4, 0x00000010, + 0x800001d6, 0x00000010, 0x800001d8, 0x00000010, + 0x800001da, 0x00000010, 0x800001dc, 0x00000010, + 0x800001df, 0x00000010, 0x800001e1, 0x00000010, + 0x800001e3, 0x00000010, 0x800001e5, 0x00000010, + 0x800001e7, 0x00000010, 0x800001e9, 0x00000010, + 0x800001eb, 0x00000010, 0x800001ed, 0x00000010, + 0x800001ef, 0x00000010, 0x800001f3, 0x00000010, + 0x800001f3, 0x00000010, 0x800001f5, 0x00000010, + 0x80000195, 0x00000010, 0x800001bf, 0x00000010, + 0x800001f9, 0x00000010, 0x800001fb, 0x00000010, + 0x800001fd, 0x00000010, 0x800001ff, 0x00000010, + 0x80000201, 0x00000010, 0x80000203, 0x00000010, + 0x80000205, 0x00000010, 0x80000207, 0x00000010, + 0x80000209, 0x00000010, 0x8000020b, 0x00000010, + 0x8000020d, 0x00000010, 0x8000020f, 0x00000010, + 0x80000211, 0x00000010, 0x80000213, 0x00000010, + 0x80000215, 0x00000010, 0x80000217, 0x00000010, + 0x80000219, 0x00000010, 0x8000021b, 0x00000010, + 0x8000021d, 0x00000010, 0x8000021f, 0x00000010, + 0x80000223, 0x00000010, 0x80000225, 0x00000010, + 0x80000227, 0x00000010, 0x80000229, 0x00000010, + 0x8000022b, 0x00000010, 0x8000022d, 0x00000010, + 0x8000022f, 0x00000010, 0x80000231, 0x00000010, + 0x80000233, 0x00000010, 0x800003ac, 0x00000010, + 0x800003ad, 0x00000010, 0x800003ae, 0x00000010, + 0x800003af, 0x00000010, 0x800003cc, 0x00000010, + 0x800003cd, 0x00000010, 0x800003ce, 0x00000010, + 0x800003b1, 0x00000010, 0x800003b2, 0x00000010, + 0x800003b3, 0x00000010, 0x800003b4, 0x00000010, + 0x800003b5, 0x00000010, 0x800003b6, 0x00000010, + 0x800003b7, 0x00000010, 0x800003b8, 0x00000010, + 0x800003b9, 0x00000010, 0x800003ba, 0x00000010, + 0x800003bb, 0x00000010, 0x800003bc, 0x00000010, + 0x800003bd, 0x00000010, 0x800003be, 0x00000010, + 0x800003bf, 0x00000010, 0x800003c0, 0x00000010, + 0x800003c1, 0x00000001, 0x800003c2, 0x00000010, + 0x800003c3, 0x00000010, 0x800003c4, 0x00000010, + 0x800003c5, 0x00000010, 0x800003c6, 0x00000010, + 0x800003c7, 0x00000010, 0x800003c8, 0x00000010, + 0x800003c9, 0x00000010, 0x800003ca, 0x00000010, + 0x800003cb, 0x00000010, 0x800003db, 0x00000010, + 0x800003dd, 0x00000010, 0x800003df, 0x00000010, + 0x800003e1, 0x00000010, 0x800003e3, 0x00000010, + 0x800003e5, 0x00000010, 0x800003e7, 0x00000010, + 0x800003e9, 0x00000010, 0x800003eb, 0x00000010, + 0x800003ed, 0x00000010, 0x800003ef, 0x00000010, + 0x800003b8, 0x00000010, 0x80000450, 0x00000010, + 0x80000451, 0x00000010, 0x80000452, 0x00000010, + 0x80000453, 0x00000010, 0x80000454, 0x00000010, + 0x80000455, 0x00000010, 0x80000456, 0x00000010, + 0x80000457, 0x00000010, 0x80000458, 0x00000010, + 0x80000459, 0x00000010, 0x8000045a, 0x00000010, + 0x8000045b, 0x00000010, 0x8000045c, 0x00000010, + 0x8000045d, 0x00000010, 0x8000045e, 0x00000010, + 0x8000045f, 0x00000010, 0x80000430, 0x00000010, + 0x80000431, 0x00000010, 0x80000432, 0x00000010, + 0x80000433, 0x00000010, 0x80000434, 0x00000010, + 0x80000435, 0x00000010, 0x80000436, 0x00000010, + 0x80000437, 0x00000010, 0x80000438, 0x00000010, + 0x80000439, 0x00000010, 0x8000043a, 0x00000010, + 0x8000043b, 0x00000010, 0x8000043c, 0x00000010, + 0x8000043d, 0x00000010, 0x8000043e, 0x00000010, + 0x8000043f, 0x00000010, 0x80000440, 0x00000010, + 0x80000441, 0x00000010, 0x80000442, 0x00000010, + 0x80000443, 0x00000010, 0x80000444, 0x00000010, + 0x80000445, 0x00000010, 0x80000446, 0x00000010, + 0x80000447, 0x00000010, 0x80000448, 0x00000010, + 0x80000449, 0x00000010, 0x8000044a, 0x00000010, + 0x8000044b, 0x00000010, 0x8000044c, 0x00000010, + 0x8000044d, 0x00000010, 0x8000044e, 0x00000010, + 0x8000044f, 0x00000010, 0x80000461, 0x00000010, + 0x80000463, 0x00000010, 0x80000465, 0x00000010, + 0x80000467, 0x00000010, 0x80000469, 0x00000010, + 0x8000046b, 0x00000010, 0x8000046d, 0x00000010, + 0x8000046f, 0x00000010, 0x80000471, 0x00000010, + 0x80000473, 0x00000010, 0x80000475, 0x00000010, + 0x80000477, 0x00000010, 0x80000479, 0x00000010, + 0x8000047b, 0x00000010, 0x8000047d, 0x00000010, + 0x8000047f, 0x00000010, 0x80000481, 0x00000010, + 0x8000048d, 0x00000010, 0x8000048f, 0x00000010, + 0x80000491, 0x00000010, 0x80000493, 0x00000010, + 0x80000495, 0x00000010, 0x80000497, 0x00000010, + 0x80000499, 0x00000010, 0x8000049b, 0x00000010, + 0x8000049d, 0x00000010, 0x8000049f, 0x00000010, + 0x800004a1, 0x00000010, 0x800004a3, 0x00000010, + 0x800004a5, 0x00000010, 0x800004a7, 0x00000010, + 0x800004a9, 0x00000010, 0x800004ab, 0x00000010, + 0x800004ad, 0x00000010, 0x800004af, 0x00000010, + 0x800004b1, 0x00000010, 0x800004b3, 0x00000010, + 0x800004b5, 0x00000010, 0x800004b7, 0x00000010, + 0x800004b9, 0x00000010, 0x800004bb, 0x00000010, + 0x800004bd, 0x00000010, 0x800004bf, 0x00000010, + 0x800004c2, 0x00000010, 0x800004c4, 0x00000010, + 0x800004c8, 0x00000010, 0x800004cc, 0x00000010, + 0x800004d1, 0x00000010, 0x800004d3, 0x00000010, + 0x800004d5, 0x00000010, 0x800004d7, 0x00000010, + 0x800004d9, 0x00000010, 0x800004db, 0x00000010, + 0x800004dd, 0x00000010, 0x800004df, 0x00000010, + 0x800004e1, 0x00000010, 0x800004e3, 0x00000010, + 0x800004e5, 0x00000010, 0x800004e7, 0x00000010, + 0x800004e9, 0x00000010, 0x800004eb, 0x00000010, + 0x800004ed, 0x00000010, 0x800004ef, 0x00000010, + 0x800004f1, 0x00000010, 0x800004f3, 0x00000010, + 0x800004f5, 0x00000010, 0x800004f9, 0x00000010, + 0x80000561, 0x00000010, 0x80000562, 0x00000010, + 0x80000563, 0x00000010, 0x80000564, 0x00000010, + 0x80000565, 0x00000010, 0x80000566, 0x00000010, + 0x80000567, 0x00000010, 0x80000568, 0x00000010, + 0x80000569, 0x00000010, 0x8000056a, 0x00000010, + 0x8000056b, 0x00000010, 0x8000056c, 0x00000010, + 0x8000056d, 0x00000010, 0x8000056e, 0x00000010, + 0x8000056f, 0x00000010, 0x80000570, 0x00000010, + 0x80000571, 0x00000010, 0x80000572, 0x00000010, + 0x80000573, 0x00000010, 0x80000574, 0x00000010, + 0x80000575, 0x00000010, 0x80000576, 0x00000010, + 0x80000577, 0x00000010, 0x80000578, 0x00000010, + 0x80000579, 0x00000010, 0x8000057a, 0x00000010, + 0x8000057b, 0x00000010, 0x8000057c, 0x00000010, + 0x8000057d, 0x00000010, 0x8000057e, 0x00000010, + 0x8000057f, 0x00000010, 0x80000580, 0x00000010, + 0x80000581, 0x00000010, 0x80000582, 0x00000010, + 0x80000583, 0x00000010, 0x80000584, 0x00000010, + 0x80000585, 0x00000010, 0x80000586, 0x00000010, + 0x80001e01, 0x00000010, 0x80001e03, 0x00000010, + 0x80001e05, 0x00000010, 0x80001e07, 0x00000010, + 0x80001e09, 0x00000010, 0x80001e0b, 0x00000010, + 0x80001e0d, 0x00000010, 0x80001e0f, 0x00000010, + 0x80001e11, 0x00000010, 0x80001e13, 0x00000010, + 0x80001e15, 0x00000010, 0x80001e17, 0x00000010, + 0x80001e19, 0x00000010, 0x80001e1b, 0x00000010, + 0x80001e1d, 0x00000010, 0x80001e1f, 0x00000010, + 0x80001e21, 0x00000010, 0x80001e23, 0x00000010, + 0x80001e25, 0x00000010, 0x80001e27, 0x00000010, + 0x80001e29, 0x00000010, 0x80001e2b, 0x00000010, + 0x80001e2d, 0x00000010, 0x80001e2f, 0x00000010, + 0x80001e31, 0x00000010, 0x80001e33, 0x00000010, + 0x80001e35, 0x00000010, 0x80001e37, 0x00000010, + 0x80001e39, 0x00000010, 0x80001e3b, 0x00000010, + 0x80001e3d, 0x00000010, 0x80001e3f, 0x00000010, + 0x80001e41, 0x00000010, 0x80001e43, 0x00000010, + 0x80001e45, 0x00000010, 0x80001e47, 0x00000010, + 0x80001e49, 0x00000010, 0x80001e4b, 0x00000010, + 0x80001e4d, 0x00000010, 0x80001e4f, 0x00000010, + 0x80001e51, 0x00000010, 0x80001e53, 0x00000010, + 0x80001e55, 0x00000010, 0x80001e57, 0x00000010, + 0x80001e59, 0x00000010, 0x80001e5b, 0x00000010, + 0x80001e5d, 0x00000010, 0x80001e5f, 0x00000010, + 0x80001e61, 0x00000010, 0x80001e63, 0x00000010, + 0x80001e65, 0x00000010, 0x80001e67, 0x00000010, + 0x80001e69, 0x00000010, 0x80001e6b, 0x00000010, + 0x80001e6d, 0x00000010, 0x80001e6f, 0x00000010, + 0x80001e71, 0x00000010, 0x80001e73, 0x00000010, + 0x80001e75, 0x00000010, 0x80001e77, 0x00000010, + 0x80001e79, 0x00000010, 0x80001e7b, 0x00000010, + 0x80001e7d, 0x00000010, 0x80001e7f, 0x00000010, + 0x80001e81, 0x00000010, 0x80001e83, 0x00000010, + 0x80001e85, 0x00000010, 0x80001e87, 0x00000010, + 0x80001e89, 0x00000010, 0x80001e8b, 0x00000010, + 0x80001e8d, 0x00000010, 0x80001e8f, 0x00000010, + 0x80001e91, 0x00000010, 0x80001e93, 0x00000010, + 0x80001e95, 0x00000010, 0x80001ea1, 0x00000010, + 0x80001ea3, 0x00000010, 0x80001ea5, 0x00000010, + 0x80001ea7, 0x00000010, 0x80001ea9, 0x00000010, + 0x80001eab, 0x00000010, 0x80001ead, 0x00000010, + 0x80001eaf, 0x00000010, 0x80001eb1, 0x00000010, + 0x80001eb3, 0x00000010, 0x80001eb5, 0x00000010, + 0x80001eb7, 0x00000010, 0x80001eb9, 0x00000010, + 0x80001ebb, 0x00000010, 0x80001ebd, 0x00000010, + 0x80001ebf, 0x00000010, 0x80001ec1, 0x00000010, + 0x80001ec3, 0x00000010, 0x80001ec5, 0x00000010, + 0x80001ec7, 0x00000010, 0x80001ec9, 0x00000010, + 0x80001ecb, 0x00000010, 0x80001ecd, 0x00000010, + 0x80001ecf, 0x00000010, 0x80001ed1, 0x00000010, + 0x80001ed3, 0x00000010, 0x80001ed5, 0x00000010, + 0x80001ed7, 0x00000010, 0x80001ed9, 0x00000010, + 0x80001edb, 0x00000010, 0x80001edd, 0x00000010, + 0x80001edf, 0x00000010, 0x80001ee1, 0x00000010, + 0x80001ee3, 0x00000010, 0x80001ee5, 0x00000010, + 0x80001ee7, 0x00000010, 0x80001ee9, 0x00000010, + 0x80001eeb, 0x00000010, 0x80001eed, 0x00000010, + 0x80001eef, 0x00000010, 0x80001ef1, 0x00000010, + 0x80001ef3, 0x00000010, 0x80001ef5, 0x00000010, + 0x80001ef7, 0x00000010, 0x80001ef9, 0x00000010, + 0x80001f00, 0x00000010, 0x80001f01, 0x00000010, + 0x80001f02, 0x00000010, 0x80001f03, 0x00000010, + 0x80001f04, 0x00000010, 0x80001f05, 0x00000010, + 0x80001f06, 0x00000010, 0x80001f07, 0x00000010, + 0x80001f10, 0x00000010, 0x80001f11, 0x00000010, + 0x80001f12, 0x00000010, 0x80001f13, 0x00000010, + 0x80001f14, 0x00000010, 0x80001f15, 0x00000010, + 0x80001f20, 0x00000010, 0x80001f21, 0x00000010, + 0x80001f22, 0x00000010, 0x80001f23, 0x00000010, + 0x80001f24, 0x00000010, 0x80001f25, 0x00000010, + 0x80001f26, 0x00000010, 0x80001f27, 0x00000010, + 0x80001f30, 0x00000010, 0x80001f31, 0x00000010, + 0x80001f32, 0x00000010, 0x80001f33, 0x00000010, + 0x80001f34, 0x00000010, 0x80001f35, 0x00000010, + 0x80001f36, 0x00000010, 0x80001f37, 0x00000010, + 0x80001f40, 0x00000010, 0x80001f41, 0x00000010, + 0x80001f42, 0x00000010, 0x80001f43, 0x00000010, + 0x80001f44, 0x00000010, 0x80001f45, 0x00000010, + 0x80001f51, 0x00000010, 0x80001f53, 0x00000010, + 0x80001f55, 0x00000010, 0x80001f57, 0x00000010, + 0x80001f60, 0x00000010, 0x80001f61, 0x00000010, + 0x80001f62, 0x00000010, 0x80001f63, 0x00000010, + 0x80001f64, 0x00000010, 0x80001f65, 0x00000010, + 0x80001f66, 0x00000010, 0x80001f67, 0x00000000, + 0x80001f80, 0x00000010, 0x80001f80, 0x00000000, + 0x80001f81, 0x00000010, 0x80001f81, 0x00000000, + 0x80001f82, 0x00000010, 0x80001f82, 0x00000000, + 0x80001f83, 0x00000010, 0x80001f83, 0x00000000, + 0x80001f84, 0x00000010, 0x80001f84, 0x00000000, + 0x80001f85, 0x00000010, 0x80001f85, 0x00000000, + 0x80001f86, 0x00000010, 0x80001f86, 0x00000000, + 0x80001f87, 0x00000010, 0x80001f87, 0x00000000, + 0x80001f90, 0x00000010, 0x80001f90, 0x00000000, + 0x80001f91, 0x00000010, 0x80001f91, 0x00000000, + 0x80001f92, 0x00000010, 0x80001f92, 0x00000000, + 0x80001f93, 0x00000010, 0x80001f93, 0x00000000, + 0x80001f94, 0x00000010, 0x80001f94, 0x00000000, + 0x80001f95, 0x00000010, 0x80001f95, 0x00000000, + 0x80001f96, 0x00000010, 0x80001f96, 0x00000000, + 0x80001f97, 0x00000010, 0x80001f97, 0x00000000, + 0x80001fa0, 0x00000010, 0x80001fa0, 0x00000000, + 0x80001fa1, 0x00000010, 0x80001fa1, 0x00000000, + 0x80001fa2, 0x00000010, 0x80001fa2, 0x00000000, + 0x80001fa3, 0x00000010, 0x80001fa3, 0x00000000, + 0x80001fa4, 0x00000010, 0x80001fa4, 0x00000000, + 0x80001fa5, 0x00000010, 0x80001fa5, 0x00000000, + 0x80001fa6, 0x00000010, 0x80001fa6, 0x00000000, + 0x80001fa7, 0x00000010, 0x80001fa7, 0x00000010, + 0x80001fb0, 0x00000010, 0x80001fb1, 0x00000010, + 0x80001f70, 0x00000010, 0x80001f71, 0x00000000, + 0x80001fb3, 0x00000010, 0x80001fb3, 0x00000010, + 0x80001f72, 0x00000010, 0x80001f73, 0x00000010, + 0x80001f74, 0x00000010, 0x80001f75, 0x00000000, + 0x80001fc3, 0x00000010, 0x80001fc3, 0x00000010, + 0x80001fd0, 0x00000010, 0x80001fd1, 0x00000010, + 0x80001f76, 0x00000010, 0x80001f77, 0x00000010, + 0x80001fe0, 0x00000010, 0x80001fe1, 0x00000010, + 0x80001f7a, 0x00000010, 0x80001f7b, 0x00000010, + 0x80001fe5, 0x00000010, 0x80001f78, 0x00000010, + 0x80001f79, 0x00000010, 0x80001f7c, 0x00000010, + 0x80001f7d, 0x00000000, 0x80001ff3, 0x00000010, + 0x80001ff3, 0x00000010, 0x800003c9, 0x00000010, + 0x8000006b, 0x00000010, 0x800000e5, 0x00000010, + 0x80002170, 0x00000010, 0x80002171, 0x00000010, + 0x80002172, 0x00000010, 0x80002173, 0x00000010, + 0x80002174, 0x00000010, 0x80002175, 0x00000010, + 0x80002176, 0x00000010, 0x80002177, 0x00000010, + 0x80002178, 0x00000010, 0x80002179, 0x00000010, + 0x8000217a, 0x00000010, 0x8000217b, 0x00000010, + 0x8000217c, 0x00000010, 0x8000217d, 0x00000010, + 0x8000217e, 0x00000010, 0x8000217f, 0x00000010, + 0x800024d0, 0x00000010, 0x800024d1, 0x00000010, + 0x800024d2, 0x00000010, 0x800024d3, 0x00000010, + 0x800024d4, 0x00000010, 0x800024d5, 0x00000010, + 0x800024d6, 0x00000010, 0x800024d7, 0x00000010, + 0x800024d8, 0x00000010, 0x800024d9, 0x00000010, + 0x800024da, 0x00000010, 0x800024db, 0x00000010, + 0x800024dc, 0x00000010, 0x800024dd, 0x00000010, + 0x800024de, 0x00000010, 0x800024df, 0x00000010, + 0x800024e0, 0x00000010, 0x800024e1, 0x00000010, + 0x800024e2, 0x00000010, 0x800024e3, 0x00000010, + 0x800024e4, 0x00000010, 0x800024e5, 0x00000010, + 0x800024e6, 0x00000010, 0x800024e7, 0x00000010, + 0x800024e8, 0x00000010, 0x800024e9, 0x00000010, + 0x8000ff41, 0x00000010, 0x8000ff42, 0x00000010, + 0x8000ff43, 0x00000010, 0x8000ff44, 0x00000010, + 0x8000ff45, 0x00000010, 0x8000ff46, 0x00000010, + 0x8000ff47, 0x00000010, 0x8000ff48, 0x00000010, + 0x8000ff49, 0x00000010, 0x8000ff4a, 0x00000010, + 0x8000ff4b, 0x00000010, 0x8000ff4c, 0x00000010, + 0x8000ff4d, 0x00000010, 0x8000ff4e, 0x00000010, + 0x8000ff4f, 0x00000010, 0x8000ff50, 0x00000010, + 0x8000ff51, 0x00000010, 0x8000ff52, 0x00000010, + 0x8000ff53, 0x00000010, 0x8000ff54, 0x00000010, + 0x8000ff55, 0x00000010, 0x8000ff56, 0x00000010, + 0x8000ff57, 0x00000010, 0x8000ff58, 0x00000010, + 0x8000ff59, 0x00000010, 0x8000ff5a, 0x00000010, + 0x80010428, 0x00000010, 0x80010429, 0x00000010, + 0x8001042a, 0x00000010, 0x8001042b, 0x00000010, + 0x8001042c, 0x00000010, 0x8001042d, 0x00000010, + 0x8001042e, 0x00000010, 0x8001042f, 0x00000010, + 0x80010430, 0x00000010, 0x80010431, 0x00000010, + 0x80010432, 0x00000010, 0x80010433, 0x00000010, + 0x80010434, 0x00000010, 0x80010435, 0x00000010, + 0x80010436, 0x00000010, 0x80010437, 0x00000010, + 0x80010438, 0x00000010, 0x80010439, 0x00000010, + 0x8001043a, 0x00000010, 0x8001043b, 0x00000010, + 0x8001043c, 0x00000010, 0x8001043d, 0x00000010, + 0x8001043e, 0x00000010, 0x8001043f, 0x00000010, + 0x80010440, 0x00000010, 0x80010441, 0x00000010, + 0x80010442, 0x00000010, 0x80010443, 0x00000010, + 0x80010444, 0x00000010, 0x80010445, 0x00000010, + 0x80010446, 0x00000010, 0x80010447, 0x00000010, + 0x80010448, 0x00000010, 0x80010449, 0x00000010, + 0x8001044a, 0x00000010, 0x8001044b, 0x00000010, + 0x8001044c, 0x00000010, 0x8001044d, +}; + + +/* + * Cased characters and non-spacing marks (for casemap context) + */ + +#define CASEMAP_CTX_BITS_0 9 +#define CASEMAP_CTX_BITS_1 7 +#define CASEMAP_CTX_BITS_2 5 + +#define CTX_CASED 1 +#define CTX_NSM 2 + +static const unsigned short v310_casemap_ctx_imap[] = { + 272, 400, 528, 656, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 912, + 1040, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 1168, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 784, 784, 784, 784, 784, 784, 784, 784, + 0, 0, 1, 1, 0, 2, 3, 3, + 4, 4, 4, 4, 4, 5, 6, 4, + 4, 7, 8, 4, 4, 9, 0, 0, + 10, 10, 11, 12, 13, 14, 15, 16, + 4, 4, 4, 4, 17, 4, 18, 19, + 0, 20, 21, 22, 23, 24, 25, 0, + 0, 0, 26, 27, 0, 0, 28, 29, + 30, 31, 32, 0, 0, 33, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 34, 35, 36, 37, 38, 35, 39, 37, + 40, 35, 41, 42, 34, 35, 43, 0, + 38, 44, 45, 0, 40, 0, 46, 0, + 0, 47, 48, 0, 0, 49, 50, 0, + 0, 0, 51, 0, 0, 0, 52, 0, + 0, 53, 54, 0, 0, 55, 56, 0, + 57, 58, 0, 59, 60, 61, 62, 0, + 0, 63, 57, 0, 0, 4, 64, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 65, 66, 0, + 0, 0, 0, 0, 0, 67, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 4, 4, 68, 4, 4, 69, + 70, 4, 71, 72, 4, 73, 74, 75, + 0, 0, 0, 76, 0, 0, 77, 38, + 78, 79, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 80, 0, 0, 81, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 82, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 83, 0, 0, 0, 0, 0, 0, + 0, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 84, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 85, 86, 87, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 88, 4, 89, 90, 91, 4, + 92, 93, 94, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 95, 96, 5, + 88, 88, 97, 97, 98, 98, 99, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned char tbl[32]; +} v310_casemap_ctx_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + }}, + {{ + 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, + }}, + {{ + 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, + }}, + {{ + 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + }}, + {{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, + }}, + {{ + 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, + }}, + {{ + 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + }}, + {{ + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, + 0, 2, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, + }}, + {{ + 2, 2, 2, 2, 2, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, + 0, 2, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, + }}, + {{ + 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, + 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, + 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, + }}, + {{ + 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, + }}, + {{ + 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, + 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 2, 0, + }}, + {{ + 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, + }}, + {{ + 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + }}, + {{ + 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, + }}, + {{ + 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, + }}, + {{ + 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + }}, + {{ + 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; + +/* + * Case Folding + */ + +#define CASE_FOLDING_BITS_0 9 +#define CASE_FOLDING_BITS_1 7 +#define CASE_FOLDING_BITS_2 5 + +static const unsigned short v310_case_folding_imap[] = { + 272, 400, 528, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 784, + 912, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 656, 656, 656, 656, 656, 656, 656, 656, + 0, 0, 1, 0, 0, 2, 3, 0, + 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 0, 15, 16, 17, 18, + 19, 20, 0, 21, 22, 23, 24, 25, + 0, 26, 27, 0, 28, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 45, 0, 46, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 47, 48, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 49, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 50, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 51, 52, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const struct { + unsigned short tbl[32]; +} v310_case_folding_table[] = { + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 0, 51, 52, 53, 54, 55, 56, 57, 58, + }}, + {{ + 60, 0, 61, 0, 62, 0, 63, 0, 64, 0, 65, + 0, 66, 0, 67, 0, 68, 0, 69, 0, 70, 0, + 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, + }}, + {{ + 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, + 0, 82, 0, 83, 0, 84, 85, 86, 0, 87, 0, + 88, 0, 0, 89, 0, 90, 0, 91, 0, 92, + }}, + {{ + 0, 93, 0, 94, 0, 95, 0, 96, 0, 97, 99, + 0, 100, 0, 101, 0, 102, 0, 103, 0, 104, 0, + 105, 0, 106, 0, 107, 0, 108, 0, 109, 0, + }}, + {{ + 110, 0, 111, 0, 112, 0, 113, 0, 114, 0, 115, + 0, 116, 0, 117, 0, 118, 0, 119, 0, 120, 0, + 121, 0, 122, 123, 0, 124, 0, 125, 0, 126, + }}, + {{ + 0, 127, 128, 0, 129, 0, 130, 131, 0, 132, 133, + 134, 0, 0, 135, 136, 137, 138, 0, 139, 140, 0, + 141, 142, 143, 0, 0, 0, 144, 145, 0, 146, + }}, + {{ + 147, 0, 148, 0, 149, 0, 150, 151, 0, 152, 0, + 0, 153, 0, 154, 155, 0, 156, 157, 158, 0, 159, + 0, 160, 161, 0, 0, 0, 162, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 163, 164, 0, 165, 166, 0, 167, + 168, 0, 169, 0, 170, 0, 171, 0, 172, 0, 173, + 0, 174, 0, 175, 0, 176, 0, 0, 177, 0, + }}, + {{ + 178, 0, 179, 0, 180, 0, 181, 0, 182, 0, 183, + 0, 184, 0, 185, 0, 186, 188, 189, 0, 190, 0, + 191, 192, 193, 0, 194, 0, 195, 0, 196, 0, + }}, + {{ + 197, 0, 198, 0, 199, 0, 200, 0, 201, 0, 202, + 0, 203, 0, 204, 0, 205, 0, 206, 0, 207, 0, + 208, 0, 209, 0, 210, 0, 211, 0, 212, 0, + }}, + {{ + 0, 0, 213, 0, 214, 0, 215, 0, 216, 0, 217, + 0, 218, 0, 219, 0, 220, 0, 221, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 222, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 223, 0, 224, 225, 226, + 0, 227, 0, 228, 229, 230, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + }}, + {{ + 248, 249, 0, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 0, 0, 0, 0, 259, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 263, 264, 0, 0, 0, 265, + 266, 0, 0, 0, 267, 0, 268, 0, 269, 0, + }}, + {{ + 270, 0, 271, 0, 272, 0, 273, 0, 274, 0, 275, + 0, 276, 0, 277, 0, 278, 279, 280, 0, 281, 282, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + }}, + {{ + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 331, 0, 332, 0, 333, 0, 334, 0, 335, 0, 336, + 0, 337, 0, 338, 0, 339, 0, 340, 0, 341, 0, + 342, 0, 343, 0, 344, 0, 345, 0, 346, 0, + }}, + {{ + 347, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 348, 0, 349, 0, 350, 0, 351, 0, 352, 0, + 353, 0, 354, 0, 355, 0, 356, 0, 357, 0, + }}, + {{ + 358, 0, 359, 0, 360, 0, 361, 0, 362, 0, 363, + 0, 364, 0, 365, 0, 366, 0, 367, 0, 368, 0, + 369, 0, 370, 0, 371, 0, 372, 0, 373, 0, + }}, + {{ + 0, 374, 0, 375, 0, 0, 0, 376, 0, 0, 0, + 377, 0, 0, 0, 0, 378, 0, 379, 0, 380, 0, + 381, 0, 382, 0, 383, 0, 384, 0, 385, 0, + }}, + {{ + 386, 0, 387, 0, 388, 0, 389, 0, 390, 0, 391, + 0, 392, 0, 393, 0, 394, 0, 395, 0, 396, 0, + 0, 0, 397, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + }}, + {{ + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 436, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 438, 0, 439, 0, 440, 0, 441, 0, 442, 0, 443, + 0, 444, 0, 445, 0, 446, 0, 447, 0, 448, 0, + 449, 0, 450, 0, 451, 0, 452, 0, 453, 0, + }}, + {{ + 454, 0, 455, 0, 456, 0, 457, 0, 458, 0, 459, + 0, 460, 0, 461, 0, 462, 0, 463, 0, 464, 0, + 465, 0, 466, 0, 467, 0, 468, 0, 469, 0, + }}, + {{ + 470, 0, 471, 0, 472, 0, 473, 0, 474, 0, 475, + 0, 476, 0, 477, 0, 478, 0, 479, 0, 480, 0, + 481, 0, 482, 0, 483, 0, 484, 0, 485, 0, + }}, + {{ + 486, 0, 487, 0, 488, 0, 489, 0, 490, 0, 491, + 0, 492, 0, 493, 0, 494, 0, 495, 0, 496, 0, + 497, 0, 498, 0, 499, 0, 500, 0, 501, 0, + }}, + {{ + 502, 0, 503, 0, 504, 0, 505, 0, 506, 0, 507, + 0, 508, 0, 509, 0, 510, 0, 511, 0, 512, 0, + 513, 515, 517, 519, 521, 523, 0, 0, 0, 0, + }}, + {{ + 524, 0, 525, 0, 526, 0, 527, 0, 528, 0, 529, + 0, 530, 0, 531, 0, 532, 0, 533, 0, 534, 0, + 535, 0, 536, 0, 537, 0, 538, 0, 539, 0, + }}, + {{ + 540, 0, 541, 0, 542, 0, 543, 0, 544, 0, 545, + 0, 546, 0, 547, 0, 548, 0, 549, 0, 550, 0, + 551, 0, 552, 0, 553, 0, 554, 0, 555, 0, + }}, + {{ + 556, 0, 557, 0, 558, 0, 559, 0, 560, 0, 561, + 0, 562, 0, 563, 0, 564, 0, 565, 0, 566, 0, + 567, 0, 568, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 569, 570, 571, + 572, 573, 574, 575, 576, 0, 0, 0, 0, 0, 0, + 0, 0, 577, 578, 579, 580, 581, 582, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 583, 584, 585, + 586, 587, 588, 589, 590, 0, 0, 0, 0, 0, 0, + 0, 0, 591, 592, 593, 594, 595, 596, 597, 598, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 599, 600, 601, + 602, 603, 604, 0, 0, 605, 0, 607, 0, 610, 0, + 613, 0, 0, 616, 0, 617, 0, 618, 0, 619, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 620, 621, 622, + 623, 624, 625, 626, 627, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 628, 630, 632, 634, 636, 638, 640, 642, 646, 649, 652, + 655, 658, 661, 664, 667, 668, 670, 672, 674, 676, 678, + 680, 682, 686, 689, 692, 695, 698, 701, 704, 707, + }}, + {{ + 708, 710, 712, 714, 716, 718, 720, 722, 726, 729, 732, + 735, 738, 741, 744, 747, 0, 0, 748, 750, 752, 0, + 754, 756, 759, 760, 761, 762, 765, 0, 766, 0, + }}, + {{ + 0, 0, 767, 769, 771, 0, 773, 775, 778, 779, 780, + 781, 784, 0, 0, 0, 0, 0, 785, 788, 0, 0, + 791, 793, 796, 797, 798, 799, 0, 0, 0, 0, + }}, + {{ + 0, 0, 800, 803, 806, 0, 808, 810, 813, 814, 815, + 816, 817, 0, 0, 0, 0, 0, 818, 820, 822, 0, + 824, 826, 829, 830, 831, 832, 835, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 836, 0, 0, 0, 837, + 838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, + 850, 851, 852, 853, 854, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, + }}, + {{ + 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, + 876, 877, 878, 879, 880, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 881, 883, 885, 887, 890, 893, 895, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 897, 899, 901, + 903, 905, 0, 0, 0, 0, 0, 0, 0, 0, + }}, + {{ + 0, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, + 928, 929, 930, 931, 932, 0, 0, 0, 0, 0, + }}, + {{ + 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, + 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, + 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, + }}, + {{ + 965, 966, 967, 968, 969, 970, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }}, +}; +static const unsigned long v310_case_folding_seq[] = { + 0x00000000, 0x80000061, 0x80000062, 0x80000063, + 0x80000064, 0x80000065, 0x80000066, 0x80000067, + 0x80000068, 0x80000069, 0x8000006a, 0x8000006b, + 0x8000006c, 0x8000006d, 0x8000006e, 0x8000006f, + 0x80000070, 0x80000071, 0x80000072, 0x80000073, + 0x80000074, 0x80000075, 0x80000076, 0x80000077, + 0x80000078, 0x80000079, 0x8000007a, 0x800003bc, + 0x800000e0, 0x800000e1, 0x800000e2, 0x800000e3, + 0x800000e4, 0x800000e5, 0x800000e6, 0x800000e7, + 0x800000e8, 0x800000e9, 0x800000ea, 0x800000eb, + 0x800000ec, 0x800000ed, 0x800000ee, 0x800000ef, + 0x800000f0, 0x800000f1, 0x800000f2, 0x800000f3, + 0x800000f4, 0x800000f5, 0x800000f6, 0x800000f8, + 0x800000f9, 0x800000fa, 0x800000fb, 0x800000fc, + 0x800000fd, 0x800000fe, 0x00000073, 0x80000073, + 0x80000101, 0x80000103, 0x80000105, 0x80000107, + 0x80000109, 0x8000010b, 0x8000010d, 0x8000010f, + 0x80000111, 0x80000113, 0x80000115, 0x80000117, + 0x80000119, 0x8000011b, 0x8000011d, 0x8000011f, + 0x80000121, 0x80000123, 0x80000125, 0x80000127, + 0x80000129, 0x8000012b, 0x8000012d, 0x8000012f, + 0x80000069, 0x80000069, 0x80000133, 0x80000135, + 0x80000137, 0x8000013a, 0x8000013c, 0x8000013e, + 0x80000140, 0x80000142, 0x80000144, 0x80000146, + 0x80000148, 0x000002bc, 0x8000006e, 0x8000014b, + 0x8000014d, 0x8000014f, 0x80000151, 0x80000153, + 0x80000155, 0x80000157, 0x80000159, 0x8000015b, + 0x8000015d, 0x8000015f, 0x80000161, 0x80000163, + 0x80000165, 0x80000167, 0x80000169, 0x8000016b, + 0x8000016d, 0x8000016f, 0x80000171, 0x80000173, + 0x80000175, 0x80000177, 0x800000ff, 0x8000017a, + 0x8000017c, 0x8000017e, 0x80000073, 0x80000253, + 0x80000183, 0x80000185, 0x80000254, 0x80000188, + 0x80000256, 0x80000257, 0x8000018c, 0x800001dd, + 0x80000259, 0x8000025b, 0x80000192, 0x80000260, + 0x80000263, 0x80000269, 0x80000268, 0x80000199, + 0x8000026f, 0x80000272, 0x80000275, 0x800001a1, + 0x800001a3, 0x800001a5, 0x80000280, 0x800001a8, + 0x80000283, 0x800001ad, 0x80000288, 0x800001b0, + 0x8000028a, 0x8000028b, 0x800001b4, 0x800001b6, + 0x80000292, 0x800001b9, 0x800001bd, 0x800001c6, + 0x800001c6, 0x800001c9, 0x800001c9, 0x800001cc, + 0x800001cc, 0x800001ce, 0x800001d0, 0x800001d2, + 0x800001d4, 0x800001d6, 0x800001d8, 0x800001da, + 0x800001dc, 0x800001df, 0x800001e1, 0x800001e3, + 0x800001e5, 0x800001e7, 0x800001e9, 0x800001eb, + 0x800001ed, 0x800001ef, 0x0000006a, 0x8000030c, + 0x800001f3, 0x800001f3, 0x800001f5, 0x80000195, + 0x800001bf, 0x800001f9, 0x800001fb, 0x800001fd, + 0x800001ff, 0x80000201, 0x80000203, 0x80000205, + 0x80000207, 0x80000209, 0x8000020b, 0x8000020d, + 0x8000020f, 0x80000211, 0x80000213, 0x80000215, + 0x80000217, 0x80000219, 0x8000021b, 0x8000021d, + 0x8000021f, 0x80000223, 0x80000225, 0x80000227, + 0x80000229, 0x8000022b, 0x8000022d, 0x8000022f, + 0x80000231, 0x80000233, 0x800003b9, 0x800003ac, + 0x800003ad, 0x800003ae, 0x800003af, 0x800003cc, + 0x800003cd, 0x800003ce, 0x000003b9, 0x00000308, + 0x80000301, 0x800003b1, 0x800003b2, 0x800003b3, + 0x800003b4, 0x800003b5, 0x800003b6, 0x800003b7, + 0x800003b8, 0x800003b9, 0x800003ba, 0x800003bb, + 0x800003bc, 0x800003bd, 0x800003be, 0x800003bf, + 0x800003c0, 0x800003c1, 0x800003c3, 0x800003c4, + 0x800003c5, 0x800003c6, 0x800003c7, 0x800003c8, + 0x800003c9, 0x800003ca, 0x800003cb, 0x000003c5, + 0x00000308, 0x80000301, 0x800003c3, 0x800003b2, + 0x800003b8, 0x800003c6, 0x800003c0, 0x800003db, + 0x800003dd, 0x800003df, 0x800003e1, 0x800003e3, + 0x800003e5, 0x800003e7, 0x800003e9, 0x800003eb, + 0x800003ed, 0x800003ef, 0x800003ba, 0x800003c1, + 0x800003c3, 0x800003b8, 0x800003b5, 0x80000450, + 0x80000451, 0x80000452, 0x80000453, 0x80000454, + 0x80000455, 0x80000456, 0x80000457, 0x80000458, + 0x80000459, 0x8000045a, 0x8000045b, 0x8000045c, + 0x8000045d, 0x8000045e, 0x8000045f, 0x80000430, + 0x80000431, 0x80000432, 0x80000433, 0x80000434, + 0x80000435, 0x80000436, 0x80000437, 0x80000438, + 0x80000439, 0x8000043a, 0x8000043b, 0x8000043c, + 0x8000043d, 0x8000043e, 0x8000043f, 0x80000440, + 0x80000441, 0x80000442, 0x80000443, 0x80000444, + 0x80000445, 0x80000446, 0x80000447, 0x80000448, + 0x80000449, 0x8000044a, 0x8000044b, 0x8000044c, + 0x8000044d, 0x8000044e, 0x8000044f, 0x80000461, + 0x80000463, 0x80000465, 0x80000467, 0x80000469, + 0x8000046b, 0x8000046d, 0x8000046f, 0x80000471, + 0x80000473, 0x80000475, 0x80000477, 0x80000479, + 0x8000047b, 0x8000047d, 0x8000047f, 0x80000481, + 0x8000048d, 0x8000048f, 0x80000491, 0x80000493, + 0x80000495, 0x80000497, 0x80000499, 0x8000049b, + 0x8000049d, 0x8000049f, 0x800004a1, 0x800004a3, + 0x800004a5, 0x800004a7, 0x800004a9, 0x800004ab, + 0x800004ad, 0x800004af, 0x800004b1, 0x800004b3, + 0x800004b5, 0x800004b7, 0x800004b9, 0x800004bb, + 0x800004bd, 0x800004bf, 0x800004c2, 0x800004c4, + 0x800004c8, 0x800004cc, 0x800004d1, 0x800004d3, + 0x800004d5, 0x800004d7, 0x800004d9, 0x800004db, + 0x800004dd, 0x800004df, 0x800004e1, 0x800004e3, + 0x800004e5, 0x800004e7, 0x800004e9, 0x800004eb, + 0x800004ed, 0x800004ef, 0x800004f1, 0x800004f3, + 0x800004f5, 0x800004f9, 0x80000561, 0x80000562, + 0x80000563, 0x80000564, 0x80000565, 0x80000566, + 0x80000567, 0x80000568, 0x80000569, 0x8000056a, + 0x8000056b, 0x8000056c, 0x8000056d, 0x8000056e, + 0x8000056f, 0x80000570, 0x80000571, 0x80000572, + 0x80000573, 0x80000574, 0x80000575, 0x80000576, + 0x80000577, 0x80000578, 0x80000579, 0x8000057a, + 0x8000057b, 0x8000057c, 0x8000057d, 0x8000057e, + 0x8000057f, 0x80000580, 0x80000581, 0x80000582, + 0x80000583, 0x80000584, 0x80000585, 0x80000586, + 0x00000565, 0x80000582, 0x80001e01, 0x80001e03, + 0x80001e05, 0x80001e07, 0x80001e09, 0x80001e0b, + 0x80001e0d, 0x80001e0f, 0x80001e11, 0x80001e13, + 0x80001e15, 0x80001e17, 0x80001e19, 0x80001e1b, + 0x80001e1d, 0x80001e1f, 0x80001e21, 0x80001e23, + 0x80001e25, 0x80001e27, 0x80001e29, 0x80001e2b, + 0x80001e2d, 0x80001e2f, 0x80001e31, 0x80001e33, + 0x80001e35, 0x80001e37, 0x80001e39, 0x80001e3b, + 0x80001e3d, 0x80001e3f, 0x80001e41, 0x80001e43, + 0x80001e45, 0x80001e47, 0x80001e49, 0x80001e4b, + 0x80001e4d, 0x80001e4f, 0x80001e51, 0x80001e53, + 0x80001e55, 0x80001e57, 0x80001e59, 0x80001e5b, + 0x80001e5d, 0x80001e5f, 0x80001e61, 0x80001e63, + 0x80001e65, 0x80001e67, 0x80001e69, 0x80001e6b, + 0x80001e6d, 0x80001e6f, 0x80001e71, 0x80001e73, + 0x80001e75, 0x80001e77, 0x80001e79, 0x80001e7b, + 0x80001e7d, 0x80001e7f, 0x80001e81, 0x80001e83, + 0x80001e85, 0x80001e87, 0x80001e89, 0x80001e8b, + 0x80001e8d, 0x80001e8f, 0x80001e91, 0x80001e93, + 0x80001e95, 0x00000068, 0x80000331, 0x00000074, + 0x80000308, 0x00000077, 0x8000030a, 0x00000079, + 0x8000030a, 0x00000061, 0x800002be, 0x80001e61, + 0x80001ea1, 0x80001ea3, 0x80001ea5, 0x80001ea7, + 0x80001ea9, 0x80001eab, 0x80001ead, 0x80001eaf, + 0x80001eb1, 0x80001eb3, 0x80001eb5, 0x80001eb7, + 0x80001eb9, 0x80001ebb, 0x80001ebd, 0x80001ebf, + 0x80001ec1, 0x80001ec3, 0x80001ec5, 0x80001ec7, + 0x80001ec9, 0x80001ecb, 0x80001ecd, 0x80001ecf, + 0x80001ed1, 0x80001ed3, 0x80001ed5, 0x80001ed7, + 0x80001ed9, 0x80001edb, 0x80001edd, 0x80001edf, + 0x80001ee1, 0x80001ee3, 0x80001ee5, 0x80001ee7, + 0x80001ee9, 0x80001eeb, 0x80001eed, 0x80001eef, + 0x80001ef1, 0x80001ef3, 0x80001ef5, 0x80001ef7, + 0x80001ef9, 0x80001f00, 0x80001f01, 0x80001f02, + 0x80001f03, 0x80001f04, 0x80001f05, 0x80001f06, + 0x80001f07, 0x80001f10, 0x80001f11, 0x80001f12, + 0x80001f13, 0x80001f14, 0x80001f15, 0x80001f20, + 0x80001f21, 0x80001f22, 0x80001f23, 0x80001f24, + 0x80001f25, 0x80001f26, 0x80001f27, 0x80001f30, + 0x80001f31, 0x80001f32, 0x80001f33, 0x80001f34, + 0x80001f35, 0x80001f36, 0x80001f37, 0x80001f40, + 0x80001f41, 0x80001f42, 0x80001f43, 0x80001f44, + 0x80001f45, 0x000003c5, 0x80000313, 0x000003c5, + 0x00000313, 0x80000300, 0x000003c5, 0x00000313, + 0x80000301, 0x000003c5, 0x00000313, 0x80000342, + 0x80001f51, 0x80001f53, 0x80001f55, 0x80001f57, + 0x80001f60, 0x80001f61, 0x80001f62, 0x80001f63, + 0x80001f64, 0x80001f65, 0x80001f66, 0x80001f67, + 0x00001f00, 0x800003b9, 0x00001f01, 0x800003b9, + 0x00001f02, 0x800003b9, 0x00001f03, 0x800003b9, + 0x00001f04, 0x800003b9, 0x00001f05, 0x800003b9, + 0x00001f06, 0x800003b9, 0x00001f07, 0x800003b9, + 0x00001f00, 0x800003b9, 0x80001f80, 0x00001f01, + 0x800003b9, 0x80001f81, 0x00001f02, 0x800003b9, + 0x80001f82, 0x00001f03, 0x800003b9, 0x80001f83, + 0x00001f04, 0x800003b9, 0x80001f84, 0x00001f05, + 0x800003b9, 0x80001f85, 0x00001f06, 0x800003b9, + 0x80001f86, 0x00001f07, 0x800003b9, 0x80001f87, + 0x00001f20, 0x800003b9, 0x00001f21, 0x800003b9, + 0x00001f22, 0x800003b9, 0x00001f23, 0x800003b9, + 0x00001f24, 0x800003b9, 0x00001f25, 0x800003b9, + 0x00001f26, 0x800003b9, 0x00001f27, 0x800003b9, + 0x00001f20, 0x800003b9, 0x80001f90, 0x00001f21, + 0x800003b9, 0x80001f91, 0x00001f22, 0x800003b9, + 0x80001f92, 0x00001f23, 0x800003b9, 0x80001f93, + 0x00001f24, 0x800003b9, 0x80001f94, 0x00001f25, + 0x800003b9, 0x80001f95, 0x00001f26, 0x800003b9, + 0x80001f96, 0x00001f27, 0x800003b9, 0x80001f97, + 0x00001f60, 0x800003b9, 0x00001f61, 0x800003b9, + 0x00001f62, 0x800003b9, 0x00001f63, 0x800003b9, + 0x00001f64, 0x800003b9, 0x00001f65, 0x800003b9, + 0x00001f66, 0x800003b9, 0x00001f67, 0x800003b9, + 0x00001f60, 0x800003b9, 0x80001fa0, 0x00001f61, + 0x800003b9, 0x80001fa1, 0x00001f62, 0x800003b9, + 0x80001fa2, 0x00001f63, 0x800003b9, 0x80001fa3, + 0x00001f64, 0x800003b9, 0x80001fa4, 0x00001f65, + 0x800003b9, 0x80001fa5, 0x00001f66, 0x800003b9, + 0x80001fa6, 0x00001f67, 0x800003b9, 0x80001fa7, + 0x00001f70, 0x800003b9, 0x000003b1, 0x800003b9, + 0x000003ac, 0x800003b9, 0x000003b1, 0x80000342, + 0x000003b1, 0x00000342, 0x800003b9, 0x80001fb0, + 0x80001fb1, 0x80001f70, 0x80001f71, 0x000003b1, + 0x800003b9, 0x80001fb3, 0x800003b9, 0x00001f74, + 0x800003b9, 0x000003b7, 0x800003b9, 0x000003ae, + 0x800003b9, 0x000003b7, 0x80000342, 0x000003b7, + 0x00000342, 0x800003b9, 0x80001f72, 0x80001f73, + 0x80001f74, 0x80001f75, 0x000003b7, 0x800003b9, + 0x80001fc3, 0x000003b9, 0x00000308, 0x80000300, + 0x000003b9, 0x00000308, 0x80000301, 0x000003b9, + 0x80000342, 0x000003b9, 0x00000308, 0x80000342, + 0x80001fd0, 0x80001fd1, 0x80001f76, 0x80001f77, + 0x000003c5, 0x00000308, 0x80000300, 0x000003c5, + 0x00000308, 0x80000301, 0x000003c1, 0x80000313, + 0x000003c5, 0x80000342, 0x000003c5, 0x00000308, + 0x80000342, 0x80001fe0, 0x80001fe1, 0x80001f7a, + 0x80001f7b, 0x80001fe5, 0x00001f7c, 0x800003b9, + 0x000003c9, 0x800003b9, 0x000003ce, 0x800003b9, + 0x000003c9, 0x80000342, 0x000003c9, 0x00000342, + 0x800003b9, 0x80001f78, 0x80001f79, 0x80001f7c, + 0x80001f7d, 0x000003c9, 0x800003b9, 0x80001ff3, + 0x800003c9, 0x8000006b, 0x800000e5, 0x80002170, + 0x80002171, 0x80002172, 0x80002173, 0x80002174, + 0x80002175, 0x80002176, 0x80002177, 0x80002178, + 0x80002179, 0x8000217a, 0x8000217b, 0x8000217c, + 0x8000217d, 0x8000217e, 0x8000217f, 0x800024d0, + 0x800024d1, 0x800024d2, 0x800024d3, 0x800024d4, + 0x800024d5, 0x800024d6, 0x800024d7, 0x800024d8, + 0x800024d9, 0x800024da, 0x800024db, 0x800024dc, + 0x800024dd, 0x800024de, 0x800024df, 0x800024e0, + 0x800024e1, 0x800024e2, 0x800024e3, 0x800024e4, + 0x800024e5, 0x800024e6, 0x800024e7, 0x800024e8, + 0x800024e9, 0x00000066, 0x80000066, 0x00000066, + 0x80000069, 0x00000066, 0x8000006c, 0x00000066, + 0x00000066, 0x80000069, 0x00000066, 0x00000066, + 0x8000006c, 0x00000073, 0x80000074, 0x00000073, + 0x80000074, 0x00000574, 0x80000576, 0x00000574, + 0x80000565, 0x00000574, 0x8000056b, 0x0000057e, + 0x80000576, 0x00000574, 0x8000056d, 0x8000ff41, + 0x8000ff42, 0x8000ff43, 0x8000ff44, 0x8000ff45, + 0x8000ff46, 0x8000ff47, 0x8000ff48, 0x8000ff49, + 0x8000ff4a, 0x8000ff4b, 0x8000ff4c, 0x8000ff4d, + 0x8000ff4e, 0x8000ff4f, 0x8000ff50, 0x8000ff51, + 0x8000ff52, 0x8000ff53, 0x8000ff54, 0x8000ff55, + 0x8000ff56, 0x8000ff57, 0x8000ff58, 0x8000ff59, + 0x8000ff5a, 0x80010428, 0x80010429, 0x8001042a, + 0x8001042b, 0x8001042c, 0x8001042d, 0x8001042e, + 0x8001042f, 0x80010430, 0x80010431, 0x80010432, + 0x80010433, 0x80010434, 0x80010435, 0x80010436, + 0x80010437, 0x80010438, 0x80010439, 0x8001043a, + 0x8001043b, 0x8001043c, 0x8001043d, 0x8001043e, + 0x8001043f, 0x80010440, 0x80010441, 0x80010442, + 0x80010443, 0x80010444, 0x80010445, 0x80010446, + 0x80010447, 0x80010448, 0x80010449, 0x8001044a, + 0x8001044b, 0x8001044c, 0x8001044d, +}; + diff --git a/contrib/idn/mdnkit/lib/unormalize.c b/contrib/idn/mdnkit/lib/unormalize.c index 32f9f87f..f6973dd6 100644 --- a/contrib/idn/mdnkit/lib/unormalize.c +++ b/contrib/idn/mdnkit/lib/unormalize.c @@ -1,9 +1,10 @@ #ifndef lint -static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp $"; +static char *rcsid = "$Id: unormalize.c,v 1.1 2002/01/02 02:46:50 marka Exp $"; #endif /* - * Copyright (c) 2000 Japan Network Information Center. All rights reserved. + * Copyright (c) 2000,2001 Japan Network Information Center. + * All rights reserved. * * By using this file, you agree to the terms and conditions set forth bellow. * @@ -11,8 +12,8 @@ static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -65,9 +66,6 @@ static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp #include <stddef.h> #include <stdlib.h> #include <string.h> -#ifdef DEBUG_HASHSTAT -#include <stdio.h> -#endif #include <mdn/result.h> #include <mdn/assert.h> @@ -85,6 +83,7 @@ static char *rcsid = "$Id: unormalize.c,v 1.14 2000/10/13 05:34:48 ishisone Exp #define WORKBUF_SIZE_MAX 10000 typedef struct { + mdn__unicode_version_t version; /* Unicode version */ int cur; /* pointing now processing character */ int last; /* pointing just after the last character */ int size; /* size of UCS and CLASS array */ @@ -94,7 +93,8 @@ typedef struct { int class_buf[WORKBUF_SIZE]; /* ditto */ } workbuf_t; -static mdn_result_t normalize(int do_composition, int compat, +static mdn_result_t normalize(mdn__unicode_version_t version, + int do_composition, int compat, const char *from, char *to, size_t tolen); static mdn_result_t decompose(workbuf_t *wb, unsigned long c, int compat); static void get_class(workbuf_t *wb); @@ -111,39 +111,47 @@ static void workbuf_removevoid(workbuf_t *wb); mdn_result_t -mdn__unormalize_formc(const char *from, char *to, size_t tolen) { - assert(from != NULL && to != NULL && tolen >= 0); +mdn__unormalize_formc(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen) +{ + assert(version != NULL && from != NULL && to != NULL && tolen >= 0); TRACE(("mdn__unormalize_formc(from=\"%s\", tolen=%d)\n", - mdn_debug_xstring(from, 20), tolen)); - return (normalize(1, 0, from, to, tolen)); + mdn_debug_xstring(from, 20), tolen)); + return (normalize(version, 1, 0, from, to, tolen)); } mdn_result_t -mdn__unormalize_formd(const char *from, char *to, size_t tolen) { - assert(from != NULL && to != NULL && tolen >= 0); +mdn__unormalize_formd(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen) +{ + assert(version != NULL && from != NULL && to != NULL && tolen >= 0); TRACE(("mdn__unormalize_formd(from=\"%s\", tolen=%d)\n", - mdn_debug_xstring(from, 20), tolen)); - return (normalize(0, 0, from, to, tolen)); + mdn_debug_xstring(from, 20), tolen)); + return (normalize(version, 0, 0, from, to, tolen)); } mdn_result_t -mdn__unormalize_formkc(const char *from, char *to, size_t tolen) { - assert(from != NULL && to != NULL && tolen >= 0); +mdn__unormalize_formkc(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen) +{ + assert(version != NULL && from != NULL && to != NULL && tolen >= 0); TRACE(("mdn__unormalize_formkc(from=\"%s\", tolen=%d)\n", - mdn_debug_xstring(from, 20), tolen)); - return (normalize(1, 1, from, to, tolen)); + mdn_debug_xstring(from, 20), tolen)); + return (normalize(version, 1, 1, from, to, tolen)); } mdn_result_t -mdn__unormalize_formkd(const char *from, char *to, size_t tolen) { - assert(from != NULL && to != NULL && tolen >= 0); +mdn__unormalize_formkd(mdn__unicode_version_t version, + const char *from, char *to, size_t tolen) +{ + assert(version != NULL && from != NULL && to != NULL && tolen >= 0); TRACE(("mdn__unormalize_formkd(from=\"%s\", tolen=%d)\n", - mdn_debug_xstring(from, 20), tolen)); - return (normalize(0, 1, from, to, tolen)); + mdn_debug_xstring(from, 20), tolen)); + return (normalize(version, 0, 1, from, to, tolen)); } static mdn_result_t -normalize(int do_composition, int compat, +normalize(mdn__unicode_version_t version, int do_composition, int compat, const char *from, char *to, size_t tolen) { workbuf_t wb; @@ -154,6 +162,7 @@ normalize(int do_composition, int compat, * Initialize working buffer. */ workbuf_init(&wb); + wb.version = version; while (fromlen > 0) { unsigned long c; @@ -254,9 +263,8 @@ decompose(workbuf_t *wb, unsigned long c, int compat) { int dec_len; again: - r = mdn__unicode_decompose(compat, wb->ucs + wb->last, - wb->size - wb->last, - c, &dec_len); + r = mdn__unicode_decompose(wb->version, compat, wb->ucs + wb->last, + wb->size - wb->last, c, &dec_len); switch (r) { case mdn_success: wb->last += dec_len; @@ -283,7 +291,8 @@ get_class(workbuf_t *wb) { int i; for (i = wb->cur; i < wb->last; i++) - wb->class[i] = mdn__unicode_canonicalclass(wb->ucs[i]); + wb->class[i] = mdn__unicode_canonicalclass(wb->version, + wb->ucs[i]); } static void @@ -315,18 +324,20 @@ compose(workbuf_t *wb) { int last_class; int nvoids; int i; + mdn__unicode_version_t ver; assert(wb != NULL && wb->class[0] == 0); cur = wb->cur; ucs = wb->ucs; class = wb->class; + ver = wb->version; /* * If there are no decomposition sequence that begins with * the top character, composition is impossible. */ - if (!mdn__unicode_iscompositecandidate(ucs[0])) + if (!mdn__unicode_iscompositecandidate(ver, ucs[0])) return; last_class = 0; @@ -336,12 +347,13 @@ compose(workbuf_t *wb) { int cl = class[i]; if ((last_class < cl || cl == 0) && - mdn__unicode_compose(ucs[0], ucs[i], &c) == mdn_success) { + mdn__unicode_compose(ver, ucs[0], ucs[i], + &c) == mdn_success) { /* * Replace the top character with the composed one. */ ucs[0] = c; - class[0] = mdn__unicode_canonicalclass(c); + class[0] = mdn__unicode_canonicalclass(ver, c); class[i] = -1; /* void this character */ nvoids++; diff --git a/contrib/idn/mdnkit/lib/utf5.c b/contrib/idn/mdnkit/lib/utf5.c index 76db9e7c..45a98a13 100644 --- a/contrib/idn/mdnkit/lib/utf5.c +++ b/contrib/idn/mdnkit/lib/utf5.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: utf5.c,v 1.10 2000/09/20 02:47:33 ishisone Exp $"; +static char *rcsid = "$Id: utf5.c,v 1.1 2002/01/02 02:46:51 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: utf5.c,v 1.10 2000/09/20 02:47:33 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/utf6.c b/contrib/idn/mdnkit/lib/utf6.c index 6f0d9423..66f2efe4 100644 --- a/contrib/idn/mdnkit/lib/utf6.c +++ b/contrib/idn/mdnkit/lib/utf6.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: utf6.c,v 1.1 2001/06/09 00:30:30 tale Exp $"; +static char *rcsid = "$Id: utf6.c,v 1.1.2.1 2002/02/08 12:14:35 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: utf6.c,v 1.1 2001/06/09 00:30:30 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/utf8.c b/contrib/idn/mdnkit/lib/utf8.c index 2f7c353b..0b10b192 100644 --- a/contrib/idn/mdnkit/lib/utf8.c +++ b/contrib/idn/mdnkit/lib/utf8.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: utf8.c,v 1.12 2000/10/25 06:43:00 ishisone Exp $"; +static char *rcsid = "$Id: utf8.c,v 1.1 2002/01/02 02:46:51 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: utf8.c,v 1.12 2000/10/25 06:43:00 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/util.c b/contrib/idn/mdnkit/lib/util.c index a3cad1a3..3579cfcf 100644 --- a/contrib/idn/mdnkit/lib/util.c +++ b/contrib/idn/mdnkit/lib/util.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: util.c,v 1.8 2001/05/31 05:21:38 ishisone Exp $"; +static char *rcsid = "$Id: util.c,v 1.1 2002/01/02 02:46:51 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: util.c,v 1.8 2001/05/31 05:21:38 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/lib/version.c b/contrib/idn/mdnkit/lib/version.c index 9c7e4893..519aa505 100644 --- a/contrib/idn/mdnkit/lib/version.c +++ b/contrib/idn/mdnkit/lib/version.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: version.c,v 1.1 2001/06/09 00:30:31 tale Exp $"; +static char *rcsid = "$Id: version.c,v 1.1.2.1 2002/02/08 12:14:39 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: version.c,v 1.1 2001/06/09 00:30:31 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/make.wnt b/contrib/idn/mdnkit/make.wnt index cac83587..bc84839a 100644 --- a/contrib/idn/mdnkit/make.wnt +++ b/contrib/idn/mdnkit/make.wnt @@ -1,4 +1,4 @@ -# $Id: make.wnt,v 1.1 2001/06/09 00:29:31 tale Exp $ +# $Id: make.wnt,v 1.1.2.1 2002/02/08 12:12: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. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/man/Makefile.in b/contrib/idn/mdnkit/man/Makefile.in index dd217127..e62e2613 100644 --- a/contrib/idn/mdnkit/man/Makefile.in +++ b/contrib/idn/mdnkit/man/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.5 2001/05/15 04:44:18 ishisone Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:46:52 marka Exp $ # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # @@ -8,8 +8,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/man/libmdn.3.in b/contrib/idn/mdnkit/man/libmdn.3.in index 9020478d..9af6eab5 100644 --- a/contrib/idn/mdnkit/man/libmdn.3.in +++ b/contrib/idn/mdnkit/man/libmdn.3.in @@ -1,4 +1,4 @@ -.\" $Id: libmdn.3.in,v 1.1 2001/06/09 00:30:33 tale Exp $ +.\" $Id: libmdn.3.in,v 1.1.2.1 2002/02/08 12:14:42 marka Exp $ .\" .\" Copyright (c) 2001 Japan Network Information Center. All rights reserved. .\" @@ -8,8 +8,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -150,7 +150,7 @@ the encoding process are to be employed. .nf .ft CW #define MDN_LOCALCONV 0x0001 /* Local encoding <-> UTF-8 conversion */ -#define MDN_IDNCONV 0x0002 /* UTF-8 <-> IDN encoding conversion */ +#define MDN_IDNCONV 0x0002 /* UTF-8 <-> ACE conversion */ #define MDN_NAMEPREP 0x0004 /* NAMEPREP */ #define MDN_UNASCHECK 0x0008 /* Unassigned code point check */ #define MDN_DELIMMAP 0x0100 /* Delimiter mapping */ @@ -184,14 +184,15 @@ whose length is specified by .I actions specifies which subprocesses in decoding process take place, as in .BR mdn_encodename , -except that only \f(CWMDN_IDNCONV\fP and \f(CWMDN_LOCALCONV\fP are allowed. +except that only \f(CWMDN_IDNCONV\fP, \f(CWMDN_NAMEPREP\fP and +\f(CWMDN_LOCALCONV\fP are allowed. Details of this decoding process can be found in the section ``NAME DECODING''. .PP For ordinary application, the following macro is provided for the convenience. .RS 2 .nf .ft CW -#define MDN_DECODE_APP (MDN_IDNCONV|MDN_LOCALCONV) +#define MDN_DECODE_APP (MDN_IDNCONV|MDN_NAMEPREP|MDN_LOCALCONV) .ft R .fi .RE @@ -220,11 +221,11 @@ The source encoding must be one of the two encodings below: .IP \- 2 The application's local encoding (codeset). .IP \- 2 -The alternate encoding specified by the configuration file. +ACE specified by the configuration file. .RE The latter is suppored because name decoding process may produce -strings in the alternate encoding when its attempt to convert to the -local encoding fails. See the section ``NAME DECODING'' for details. +ACE strings when its attempt to convert to the local encoding fails. +See the section ``NAME DECODING'' for details. .IP "(2) Local mapping" Apply any locale/language-specific mapping. This process is further divided into two subprocesses: @@ -259,12 +260,12 @@ UTF-8 format. .SH "NAME DECODING" Name decoding is a reverse process of the name encoding. It transforms the specified -multilingual domain name in a special encoding suitable for name +multilingual domain name in a special encoding suitable for name resolution to the normal name string in the application's current codeset. However, name encoding and name decoding are not symmetric. -Name encoding involves NAMEPREP and local mapping in order for the names -to be normalized, but name decoding presumes the name is already -in normalized form, so these subprocesses are not in the decoding process. +Name decoding doesn't perform local mapping. +Both name encoding and decoding do NAMEPREP, but decoding does +it to verfiy a name, while encoding does it to normalize a name. .PP .BR libmdn 's name decoding process consists of the following steps. @@ -272,7 +273,14 @@ name decoding process consists of the following steps. Convert the encoding of the given domain name from a special one designed for representing multilingual domain names (ACE) to Unicode/ISO10646 UTF-8. -.IP "(2) Encoding conversion (UCS to local codeset)" +.IP "(2) NAMEPREP check" +Perform name preparation (NAMEPREP) as also done in name encoding, +and compare the result of NAMEPREP and the given UCS name. +If the NAMEPREP is failed or the names are different, the given +name is considered as invalid domain name. +It contains a character which is never seen in a NAMEPREPed domain +name. +.IP "(3) Encoding conversion (UCS to local codeset)" Convert the encoding of the name from UTF-8 to the application's local codeset. The local codeset is determined by the application's locale. @@ -280,9 +288,8 @@ The local codeset is determined by the application's locale. However, it is possible that the conversion to the application's local codeset fails because the name includes some characters which don't have mappings to the local codeset. -In this case, libmdn tries instead to convert to an encoding -called ``alternate encoding,'' which is specified by the -configuration file. +In this case, libmdn tries instead to convert to ACE specified by +the configuration file. .PP The configuration parameters for this process, are also read from the configuration file diff --git a/contrib/idn/mdnkit/man/mdn.conf.5.in b/contrib/idn/mdnkit/man/mdn.conf.5.in index bb0c9fd2..691b3e45 100644 --- a/contrib/idn/mdnkit/man/mdn.conf.5.in +++ b/contrib/idn/mdnkit/man/mdn.conf.5.in @@ -1,4 +1,4 @@ -.\" $Id: mdn.conf.5.in,v 1.1 2001/06/09 00:30:33 tale Exp $" +.\" $Id: mdn.conf.5.in,v 1.1.2.1 2002/02/08 12:14:43 marka Exp $" .\" .\" Copyright (c) 2000,2001 Japan Network Information Center. .\" All rights reserved. @@ -9,8 +9,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -101,9 +101,6 @@ specifies the parameters for these tasks, such as: the encoding of internationalized domain names (IDN encoding). .IP \- 2 NAMEPREP schemes. -.IP \- 2 -the alternative encoding which is used in case the domain name in -the IDN encoding cannot be convertible to the local encoding. .RE .\" .SH SYNTAX @@ -135,24 +132,12 @@ The syntax of this entry is: names can be specified. .RS 2 .IP "\(bu" 2 -``RACE'' -.IP "\(bu" 2 -``BRACE'' +``AMC-ACE-Z'' .IP "\(bu" 2 -``LACE'' +``RACE'' .IP "\(bu" 2 ``DUDE'' .IP "\(bu" 2 -``UTF-6'' -.IP "\(bu" 2 -``AltDUDE'' -.IP "\(bu" 2 -``AMC-ACE-M'' -.IP "\(bu" 2 -``AMC-ACE-O'' -.IP "\(bu" 2 -``AMC-ACE-R'' -.IP "\(bu" 2 ``UTF-8'' .IP "\(bu" 2 Codeset names which iconv_open() library function accepts. Please @@ -185,13 +170,17 @@ the following can be specified. .RS 2 .IP "\(bu" 2 -``nameprep-02'' -.br -This version refers to Internet Draft ``draft-ietf-idn-nameprep-02.txt''. -.IP "\(bu" 2 ``nameprep-03'' .br This version refers to Internet Draft ``draft-ietf-idn-nameprep-03.txt''. +.IP "\(bu" 2 +``nameprep-05'' +.br +This version refers to Internet Draft ``draft-ietf-idn-nameprep-05.txt''. +.IP "\(bu" 2 +``nameprep-06'' +.br +This version refers to Internet Draft ``draft-ietf-idn-nameprep-06.txt''. .RE .PP The NAMEPREP process consists of the following 3 subprocesses. @@ -240,12 +229,15 @@ The syntax of this entry is: specifies the mapping scheme, and currently available schemes are: .RS 2 .TP 4 -\f(CWnameprep-02\fP -Specify mapping defined by NAMEPREP-02 draft. -.TP 4 \f(CWnameprep-03\fP Specify mapping defined by NAMEPREP-03 draft. .TP 4 +\f(CWnameprep-05\fP +Specify mapping defined by NAMEPREP-05 draft. +.TP 4 +\f(CWnameprep-06\fP +Specify mapping defined by NAMEPREP-06 draft. +.TP 4 \f(CWfilemap:\fP\fIpathname\fP Specify mapping defined by the file \fIpathname\fP. See ``MAPFILE FORMAT'' for the format of this file. @@ -271,37 +263,24 @@ is the normalization scheme, and following shows the currently available schemes: .RS 2 .TP 4 -\f(CWnameprep-02\fP -Synonim for \f(CWunicode-form-kc\fR. -.TP 4 \f(CWnameprep-03\fP -Synonim for \f(CWunicode-form-kc\fR. -.TP 4 -\f(CWascii-lowercase\fP -Convert ASCII uppercase letters to lowercase. +Synonim for \f(CWunicode-form-kc/3.0.1\fR. .TP 4 -\f(CWascii-uppercase\fP -Convert ASCII lowercase letters to uppercase. +\f(CWnameprep-05\fP +Synonim for \f(CWunicode-form-kc/3.1.0\fR. .TP 4 -\f(CWunicode-lowercase\fP -Convert Unicode uppercase letters to lowercase, based on ``Unicode -Technical Report #21: Case Mappings''. -Note that only locale-independent conversion is supported. +\f(CWnameprep-06\fP +Synonim for \f(CWunicode-form-kc/3.1.0\fR. .TP 4 -\f(CWunicode-uppercase\fP -Convert Unicode lowercase letters to uppercase, based on ``Unicode -Technical Report #21: Case Mappings''. -Note that only locale-independent conversion is supported. -.TP 4 -\f(CWunicode-foldcase\fP -Perform Unicode case-folding for case-less string matching, -which is also defined by ``Unicode Technical Report #21: Case Mappings''. +\f(CWunicode-form-kc\fP +Perform Unicode normalization called ``Unicode Normalization Form KC'', +defined by the latest standard. .TP 4 -\f(CWunicode-form-c\fP -Perform Unicode normalization called ``Unicode Normalization Form C''. +\f(CWunicode-form-kc/3.0.1\fP +Perform Unicode Normalization Form KC defined by Unicode 3.0.1. .TP 4 -\f(CWunicode-form-kc\fP -Perform Unicode normalization called ``Unicode Normalization Form KC''. +\f(CWunicode-form-kc/3.1.0\fP +Perform Unicode Normalization Form KC defined by Unicode 3.1.0. .RE .PP More than one @@ -324,12 +303,15 @@ specifies the set of prohibited characters. Currently following sets can be specified. .RS 2 .TP 4 -\f(CWnameprep-02\fP -Specify set of prohibited characters defined by NAMEPREP-02 draft. -.TP 4 \f(CWnameprep-03\fP Specify set of prohibited characters defined by NAMEPREP-03 draft. .TP 4 +\f(CWnameprep-05\fP +Specify set of prohibited characters defined by NAMEPREP-05 draft. +.TP 4 +\f(CWnameprep-06\fP +Specify set of prohibited characters defined by NAMEPREP-06 draft. +.TP 4 \f(CWfileset:\fP\fIpathname\fP Specify set of prohibited characters defined by the file \fIpathname\fP. See ``SETFILE FORMAT '' for the format of this file. @@ -355,12 +337,15 @@ specifies the set of unassigned characters. Currently following sets can be specified. .RS 2 .TP 4 -\f(CWnameprep-02\fP -Specify set of unassigned characters defined by NAMEPREP-02 draft. -.TP 4 \f(CWnameprep-03\fP Specify set of unassigned characters defined by NAMEPREP-03 draft. .TP 4 +\f(CWnameprep-05\fP +Specify set of unassigned characters defined by NAMEPREP-05 draft. +.TP 4 +\f(CWnameprep-06\fP +Specify set of unassigned characters defined by NAMEPREP-06 draft. +.TP 4 \f(CWfileset:\fP\fIpathname\fP Specify set of unassigned characters defined by the file \fIpathname\fP. See ``SETFILE FORMAT '' for the format of this file. @@ -371,31 +356,6 @@ When more than one are specified, a character is considered unassigned if it belongs to any one of those sets. .\" -.SH "ALTERNATE-ENCODING ENTRY" -mDNkit provides local codeset coversion feature, and in domain name -decoding process, multilingual domain names are converted to the -local codeset the application is using. -However, it is possible that the conversion fails because some -characters in the domain names have no mapping to the local codeset. -This occurs, for example, when a Japanese application using Japanese -codeset receives a DNS reply containing Chinese characters which -are not included in the Japanese character set. -.PP -Alternative encoding entry specifies the codeset name to be used -instead of the local codeset in case the above problem happens. -.PP -The syntax of this entry is: -.PP -.RS 4 -.nf -\f(CWalternate-encoding \fP\fIencoding\fP -.fi -.RE -.PP -.I encoding -is the name of the codeset. It must be an ASCII-compatible -encoding (ACE) such as ``RACE''. -.\" .SH "ENCODING-ALIAS-FILE ENTRY" Encoding alias entry specifies the file containing codeset name aliases. The aliases can be used just as the real names. @@ -577,11 +537,8 @@ The following shows a sample configuration file. # Use RACE as the IDN encoding. idn-encoding RACE -# Use draft-ietf-idn-nameprep-03.txt as NAMEPREP. -nameprep nameprep-03 - -# Use BRACE as the alternative encoding. -alternate-encoding BRACE +# Use draft-ietf-idn-nameprep-06.txt as NAMEPREP. +nameprep nameprep-06 # Regard U+3002 (IDEOGRAPHIC FULL STOP) and U+FF0E # (FULLWIDTH FULL STOP) as the domain component delimiter diff --git a/contrib/idn/mdnkit/map/Makefile.in b/contrib/idn/mdnkit/map/Makefile.in index 1af59982..d5391134 100644 --- a/contrib/idn/mdnkit/map/Makefile.in +++ b/contrib/idn/mdnkit/map/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.1 2001/06/09 00:30:34 tale Exp $ +# $Id: Makefile.in,v 1.1.2.1 2002/02/08 12:14:44 marka Exp $ # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # @@ -8,8 +8,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/map/jp.map b/contrib/idn/mdnkit/map/jp.map index 972641ac..70639000 100644 --- a/contrib/idn/mdnkit/map/jp.map +++ b/contrib/idn/mdnkit/map/jp.map @@ -1,4 +1,4 @@ -# $Id: jp.map,v 1.1 2001/06/09 00:30:34 tale Exp $ +# $Id: jp.map,v 1.1.2.1 2002/02/08 12:14:45 marka Exp $ # Copyright (c) 2001 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/mdnsproxy/Makefile.in b/contrib/idn/mdnkit/mdnsproxy/Makefile.in index bfe2e923..d01d58b9 100644 --- a/contrib/idn/mdnkit/mdnsproxy/Makefile.in +++ b/contrib/idn/mdnkit/mdnsproxy/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.1 2001/06/09 00:30:35 tale Exp $ +# $Id: Makefile.in,v 1.1.2.1 2002/02/08 12:14:47 marka Exp $ # Makefile for mDNS Proxy Server # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. @@ -9,8 +9,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -80,14 +80,15 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs SHELL = @SHELL@ LIBTOOL = @LIBTOOL@ +ICONVINC = @ICONVINC@ +ICONVLIB = @ICONVLIB@ +MDNLIB = ../lib/libmdn.la + OPTS = -INCS = -I$(srcdir)/../include -I../include +INCS = -I$(srcdir)/../include -I../include $(ICONVINC) DEFS = -DUNIX -DCONFIG_PATH="\"$(sysconfdir)\"" -DLOGDIR="\"$(logdir)\"" CFLAGS = $(OPTS) $(INCS) $(DEFS) @CFLAGS@ LDFLAGS = $(OPTS) @LDFLAGS@ - -MDNLIB = ../lib/libmdn.la -ICONVLIB = @ICONVLIB@ LIBS = @LIBS@ # diff --git a/contrib/idn/mdnkit/mdnsproxy/acl.c b/contrib/idn/mdnkit/mdnsproxy/acl.c index 8614ad95..cd5fa3e2 100644 --- a/contrib/idn/mdnkit/mdnsproxy/acl.c +++ b/contrib/idn/mdnkit/mdnsproxy/acl.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: acl.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: acl.c,v 1.1.2.1 2002/02/08 12:14:48 marka Exp $"; #endif #include <config.h> diff --git a/contrib/idn/mdnkit/mdnsproxy/logging.c b/contrib/idn/mdnkit/mdnsproxy/logging.c index 93f52873..160294d7 100644 --- a/contrib/idn/mdnkit/mdnsproxy/logging.c +++ b/contrib/idn/mdnkit/mdnsproxy/logging.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: logging.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: logging.c,v 1.1.2.1 2002/02/08 12:14:49 marka Exp $"; #endif #include <config.h> @@ -72,6 +72,10 @@ static char *rcsid = "$Id: logging.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; #include <stdarg.h> #include <time.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + #ifdef HAVE_SYSLOG #include <syslog.h> #endif @@ -275,63 +279,64 @@ void log_turnover(void) timeToTurnOver = 0; log_trace_printf("--- log file turned over\n"); log_terminate() ; + logFptr = fopen(logFname, "a") ; } } /* - * libmdn_logproc_file - log hander for libmdn + * libmdn_logproc - log hander for libmdn * output message to a regular log file. */ static void -libmdn_logproc_file(int level, const char *buf) +libmdn_logproc(int level, const char *message) { - switch (level) { - case mdn_log_level_fatal: - FATAL((char *)buf); - break; - case mdn_log_level_warning: - case mdn_log_level_info: - WARN((char *)buf); - break; - case mdn_log_level_trace: - case mdn_log_level_dump: - TRACE((char *)buf); - break; - } -} + char buff[512] ; + char *newline; + time_t t; -/* - * libmdn_logproc_syslog - log hander for libmdn. - * output message to syslog. - */ -static void -libmdn_logproc_syslog(int level, const char *buf) -{ + if (logMode == LOGMODE_SYSLOG) { #ifdef HAVE_SYSLOG - switch (level) { - case mdn_log_level_fatal: - syslog(LOG_ERR, "[FATAL] %s", buf); - break; - case mdn_log_level_error: - syslog(LOG_ERR, "[ERROR] %s", buf); - break; - case mdn_log_level_warning: - syslog(LOG_WARNING, "[WARNING] %s", buf); - break; - case mdn_log_level_info: - syslog(LOG_INFO, "[INFO] %s", buf); - break; - case mdn_log_level_trace: - syslog(LOG_DEBUG, "[TRACE] %s", buf); - break; - case mdn_log_level_dump: - syslog(LOG_DEBUG, "[DUMP] %s", buf); - break; - default: - syslog(LOG_NOTICE, "[LEVEL%d] %s", level, buf); - break; - } + switch (level) { + case mdn_log_level_fatal: + syslog(LOG_ERR, "[FATAL] %s", message); + break; + case mdn_log_level_error: + syslog(LOG_ERR, "[ERROR] %s", message); + break; + case mdn_log_level_warning: + syslog(LOG_WARNING, "[WARNING] %s", message); + break; + case mdn_log_level_info: + syslog(LOG_INFO, "[INFO] %s", message); + break; + case mdn_log_level_trace: + syslog(LOG_DEBUG, "[TRACE] %s", message); + break; + case mdn_log_level_dump: + syslog(LOG_DEBUG, "[DUMP] %s", message); + break; + default: + syslog(LOG_NOTICE, "[LEVEL%d] %s", level, message); + break; + } #endif /* HAVE_SYSLOG */ + + } else if (logMode == LOGMODE_STDERR) { + fputs(message, logFptr) ; + fflush(logFptr) ; + + } else if (logFptr != NULL) { + t = time(NULL); + strcpy(buff, ctime(&t)); + newline = strchr(buff, '\n'); + if (newline != NULL) + *newline = '\0'; + + fputs(buff, logFptr); + fprintf(logFptr, " [%d]: ", (int)getpid()); + fputs(message, logFptr) ; + fflush(logFptr) ; + } } /* @@ -366,6 +371,8 @@ libmdn_string_to_loglevel(char *s) static void log_vprintf(int level, char *fmt, va_list arg_ptr) { char buff[512] ; + char *newline; + time_t t; if (logLevel < level) { return; @@ -375,14 +382,9 @@ static void log_vprintf(int level, char *fmt, va_list arg_ptr) * format message */ - vsprintf(buff, fmt, arg_ptr) ; - -#ifdef DEBUG - printf("%s", buff) ; - fflush(stdout) ; -#endif - if (logMode == LOGMODE_SYSLOG) { + vsprintf(buff, fmt, arg_ptr) ; + #ifdef HAVE_SYSLOG switch (level) { case LOGLEVEL_FATAL: @@ -396,8 +398,21 @@ static void log_vprintf(int level, char *fmt, va_list arg_ptr) break; } #endif /* HAVE_SYSLOG */ + + } else if (logMode == LOGMODE_STDERR) { + vfprintf(logFptr, fmt, arg_ptr) ; + fflush(logFptr) ; + } else if (logFptr != NULL) { - fputs(buff, logFptr) ; + t = time(NULL); + strcpy(buff, ctime(&t)); + newline = strchr(buff, '\n'); + if (newline != NULL) + *newline = '\0'; + + fputs(buff, logFptr); + fprintf(logFptr, " [%d]: ", (int)getpid()); + vfprintf(logFptr, fmt, arg_ptr); fflush(logFptr) ; } @@ -462,8 +477,9 @@ BOOL log_configure(int ac, char *av[]) } } if (fn != NULL) { - if (strlen(fn) + 1 < sizeof(logFname)) { - WARN("log_configure - too long log file name \"%.100s...\"\n", + if (strlen(fn) + 1 > sizeof(logFname)) { + fprintf(stderr, + "log_configure - too long log file name \"%.100s...\"\n", fn); return FALSE; } @@ -471,7 +487,8 @@ BOOL log_configure(int ac, char *av[]) } else if (config_query_value(KW_LOG_FILE, &nArgs, &aArgs, &lineNo)) { if (nArgs != 2) { - WARN("log_configure - wrong # of args for \"%s\", line %d\n", + fprintf(stderr, + "log_configure - wrong # of args for \"%s\", line %d\n", KW_LOG_FILE, lineNo); return FALSE; } @@ -482,12 +499,14 @@ BOOL log_configure(int ac, char *av[]) int level ; if (nArgs != 2) { - WARN("log_configure - wrong # of args for \"%s\", line %d\n", + fprintf(stderr, + "log_configure - wrong # of args for \"%s\", line %d\n", KW_LOG_LEVEL, lineNo); return FALSE; } if ((level = log_strtolevel(aArgs[1])) < 0) { - WARN("log_configure - invalid log level \"%.100s\", line %d\n", + fprintf(stderr, + "log_configure - invalid log level \"%.100s\", line %d\n", aArgs[1], lineNo); return FALSE; } @@ -498,12 +517,14 @@ BOOL log_configure(int ac, char *av[]) int level; if (nArgs != 2) { - WARN("wrong # of args for \"%s\", line %d\n", KW_MDN_LOG_LEVEL, + fprintf(stderr, + "wrong # of args for \"%s\", line %d\n", KW_MDN_LOG_LEVEL, lineNo); return FALSE; } if ((level = libmdn_string_to_loglevel(aArgs[1])) < 0) { - WARN("unknown mdn log level \"%.100s\", line %d\n", aArgs[1], + fprintf(stderr, + "unknown mdn log level \"%.100s\", line %d\n", aArgs[1], lineNo); return FALSE; } @@ -514,11 +535,13 @@ BOOL log_configure(int ac, char *av[]) if (config_query_value(KW_SYSLOG_FACILITY, &nArgs, &aArgs, &lineNo) == TRUE) { if (nArgs != 2) { - WARN("log_configure - wrong # of args for \"%s\", line %d\n", + fprintf(stderr, + "log_configure - wrong # of args for \"%s\", line %d\n", KW_LOG_LEVEL, lineNo); return FALSE; } else if (!log_strtofacility(aArgs[1], &logFacility)) { - WARN("log_configure - unknown syslog facility \"%.100s\", " + fprintf(stderr, + "log_configure - unknown syslog facility \"%.100s\", " "line %d\n", aArgs[1], lineNo); return FALSE; } @@ -526,7 +549,7 @@ BOOL log_configure(int ac, char *av[]) #endif /* HAVE_SYSLOG */ if (*logFname == '\0') { - WARN("log_configure - no logging file specified\n"); + fprintf(stderr, "log_configure - no logging file specified\n"); return FALSE; } @@ -535,23 +558,27 @@ BOOL log_configure(int ac, char *av[]) logMode = LOGMODE_SYSLOG; logFptr = NULL; openlog("mdnsproxy", LOG_NDELAY | LOG_PID, logFacility); - mdn_log_setproc(libmdn_logproc_syslog); syslog(LOG_NOTICE, "** mdnsproxy version %s", mdn_version_getstring()); #else /* not HAVE_SYSLOG */ - WARN("log_configure - syslog is unavailable\n"); + fprintf(stderr, "log_configure - syslog is unavailable\n"); return FALSE; #endif /* not HAVE_SYSLOG */ + } else if (strcmp(logFname, "stderr") == 0) { + logMode = LOGMODE_STDERR; + logFptr = stderr; } else { logMode = LOGMODE_FILE; logFptr = fopen(logFname, "a") ; - mdn_log_setproc(libmdn_logproc_file); if (logFptr == NULL) { - WARN("log_configure - cannot open, the log file\"%.100s\"\n", + fprintf(stderr, + "log_configure - cannot open, the log file\"%.100s\"\n", logFname); return FALSE; } - WARN("** mdnsproxy version %s\n", mdn_version_getstring()); + fprintf(stderr, "** mdnsproxy version %s\n", mdn_version_getstring()); } + mdn_log_setproc(libmdn_logproc); + return TRUE; } diff --git a/contrib/idn/mdnkit/mdnsproxy/make.wnt b/contrib/idn/mdnkit/mdnsproxy/make.wnt index d744dd58..958be5b8 100644 --- a/contrib/idn/mdnkit/mdnsproxy/make.wnt +++ b/contrib/idn/mdnkit/mdnsproxy/make.wnt @@ -1,7 +1,7 @@ # # Makefile for mDNS Proxy Server, WINNT version # -# $Id: make.wnt,v 1.1 2001/06/09 00:30:35 tale Exp $ +# $Id: make.wnt,v 1.1.2.1 2002/02/08 12:14:50 marka Exp $ # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # @@ -11,8 +11,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.8.in b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.8.in index fa094b40..c163e52c 100644 --- a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.8.in +++ b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.8.in @@ -1,4 +1,4 @@ -.\" $Id: mdnsproxy.8.in,v 1.1 2001/06/09 00:30:35 tale Exp $ +.\" $Id: mdnsproxy.8.in,v 1.1.2.1 2002/02/08 12:14:52 marka Exp $ .\" .\" Copyright (c) 2000 Japan Network Information Center. All rights reserved. .\" @@ -8,8 +8,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -163,6 +163,8 @@ Sending SIGHUP causes mdnsproxy to close the log file and then reopen it. .PP If <path> is set to ``syslog'', mdnsproxy outputs log messages with syslog. +If <path> is set to ``stderr'', mdnsproxy outputs messages to standard +error. .RE .IP "log-level <Level>" .RS diff --git a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.conf.sample b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.conf.sample index fe344599..411796c1 100644 --- a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.conf.sample +++ b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.conf.sample @@ -1,4 +1,4 @@ -# $Id: mdnsproxy.conf.sample,v 1.1 2001/06/09 00:30:35 tale Exp $ +# $Id: mdnsproxy.conf.sample,v 1.1.2.1 2002/02/08 12:14:53 marka Exp $ # # Sample mdnsproxy configuration file 'mdnsproxy.conf'. # @@ -56,11 +56,12 @@ client-encoding Shift_JIS # # 'log-file' entry specifies the pathname of the log file. If the string -# `syslog' is given, mdnsproxy will record its events with syslog. +# `syslog' is given, mdnsproxy will record its events with syslog. If +# `stderr' is given, mdnsproxy will record events to standard error. # If the entry is not specified, default log file will be used. # # syntax) -# log-file (<pathname> | syslog) +# log-file (<pathname> | syslog | stderr) # #log-file /var/log/mdnsproxy.log diff --git a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.h b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.h index c63a8cde..7877b402 100644 --- a/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.h +++ b/contrib/idn/mdnkit/mdnsproxy/mdnsproxy.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -60,7 +60,7 @@ * jurisdiction and venue of Tokyo District Court of Japan. */ -/* $Id: mdnsproxy.h,v 1.1 2001/06/09 00:30:35 tale Exp $ */ +/* $Id: mdnsproxy.h,v 1.1.2.1 2002/02/08 12:14:54 marka Exp $ */ #ifndef DNSPROXY_H #define DNSPROXY_H 1 @@ -93,7 +93,8 @@ enum { LOGMODE_FILE = 0, - LOGMODE_SYSLOG = 1 + LOGMODE_SYSLOG = 1, + LOGMODE_STDERR = 2 }; enum { diff --git a/contrib/idn/mdnkit/mdnsproxy/message.c b/contrib/idn/mdnkit/mdnsproxy/message.c index deba583c..f17ecbc8 100644 --- a/contrib/idn/mdnkit/mdnsproxy/message.c +++ b/contrib/idn/mdnkit/mdnsproxy/message.c @@ -15,8 +15,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -65,7 +65,7 @@ */ #ifndef lint -static char *rcsid = "$Id: message.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: message.c,v 1.1.2.1 2002/02/08 12:14:55 marka Exp $"; #endif #include <config.h> diff --git a/contrib/idn/mdnkit/mdnsproxy/os2main.c b/contrib/idn/mdnkit/mdnsproxy/os2main.c index 30108b8d..fe0733e9 100644 --- a/contrib/idn/mdnkit/mdnsproxy/os2main.c +++ b/contrib/idn/mdnkit/mdnsproxy/os2main.c @@ -18,8 +18,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -68,7 +68,7 @@ */ #ifndef lint -static char *rcsid = "$Id: os2main.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: os2main.c,v 1.1.2.1 2002/02/08 12:14:56 marka Exp $"; #endif #ifdef OS2 diff --git a/contrib/idn/mdnkit/mdnsproxy/proxycnf.c b/contrib/idn/mdnkit/mdnsproxy/proxycnf.c index b528d9fb..7dd346c3 100644 --- a/contrib/idn/mdnkit/mdnsproxy/proxycnf.c +++ b/contrib/idn/mdnkit/mdnsproxy/proxycnf.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: proxycnf.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: proxycnf.c,v 1.1.2.1 2002/02/08 12:14:57 marka Exp $"; #endif #include <config.h> diff --git a/contrib/idn/mdnkit/mdnsproxy/proxycnf.h b/contrib/idn/mdnkit/mdnsproxy/proxycnf.h index c6cc6345..7390098e 100644 --- a/contrib/idn/mdnkit/mdnsproxy/proxycnf.h +++ b/contrib/idn/mdnkit/mdnsproxy/proxycnf.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -60,7 +60,7 @@ * jurisdiction and venue of Tokyo District Court of Japan. */ -/* $Id: proxycnf.h,v 1.1 2001/06/09 00:30:35 tale Exp $ */ +/* $Id: proxycnf.h,v 1.1.2.1 2002/02/08 12:14:59 marka Exp $ */ #ifndef PROXYCNF_H #define PROXYCNF_H 1 diff --git a/contrib/idn/mdnkit/mdnsproxy/server.c b/contrib/idn/mdnkit/mdnsproxy/server.c index 222b782f..844d1227 100644 --- a/contrib/idn/mdnkit/mdnsproxy/server.c +++ b/contrib/idn/mdnkit/mdnsproxy/server.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: server.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: server.c,v 1.1.2.1 2002/02/08 12:15:00 marka Exp $"; #endif #include <config.h> @@ -570,7 +570,7 @@ static NETPTR initUdp(void) setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)) ; if (bind(sock, &addr, sizeof(addr)) < 0) { - WARN("initUdp- cannot bind UDP socket\n") ; + WARN("initUdp - cannot bind UDP socket\n") ; close(sock) ; return NULL ; } diff --git a/contrib/idn/mdnkit/mdnsproxy/translate.c b/contrib/idn/mdnkit/mdnsproxy/translate.c index f3026dcd..3d8bba58 100644 --- a/contrib/idn/mdnkit/mdnsproxy/translate.c +++ b/contrib/idn/mdnkit/mdnsproxy/translate.c @@ -7,8 +7,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -57,7 +57,7 @@ */ #ifndef lint -static char *rcsid = "$Id: translate.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: translate.c,v 1.1.2.1 2002/02/08 12:15:01 marka Exp $"; #endif #include <config.h> @@ -149,7 +149,7 @@ translate_initialize(void) */ if (!config_query_value(KW_CLIENT_ENCODING, &ac, &av, &lineNo)) { WARN("\"%s\" not found in the configuration file\n", - KW_ALTERNATE_ENCODING); + KW_CLIENT_ENCODING); return FALSE; } if (ac != 2) { diff --git a/contrib/idn/mdnkit/mdnsproxy/unxmain.c b/contrib/idn/mdnkit/mdnsproxy/unxmain.c index be7237d9..d16d381b 100644 --- a/contrib/idn/mdnkit/mdnsproxy/unxmain.c +++ b/contrib/idn/mdnkit/mdnsproxy/unxmain.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: unxmain.c,v 1.1 2001/06/09 00:30:35 tale Exp $"; +static char *rcsid = "$Id: unxmain.c,v 1.1.2.1 2002/02/08 12:15:03 marka Exp $"; #endif #ifdef UNIX @@ -284,7 +284,6 @@ int main(int ac, char *av[]) setsid() ; close(0) ; close(1) ; - close(2) ; break ; default : fprintf(stderr, "start daemon PID %d\n", pid) ; diff --git a/contrib/idn/mdnkit/mdnsproxy/winmain.c b/contrib/idn/mdnkit/mdnsproxy/winmain.c index a4879452..c350721d 100644 --- a/contrib/idn/mdnkit/mdnsproxy/winmain.c +++ b/contrib/idn/mdnkit/mdnsproxy/winmain.c @@ -28,8 +28,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -78,7 +78,7 @@ */ #ifndef lint -static char *rcsid = "$Id: winmain.c,v 1.1 2001/06/09 00:30:36 tale Exp $"; +static char *rcsid = "$Id: winmain.c,v 1.1.2.1 2002/02/08 12:15:04 marka Exp $"; #endif #ifdef WIN32 diff --git a/contrib/idn/mdnkit/mdnsproxy/winserv.c b/contrib/idn/mdnkit/mdnsproxy/winserv.c index 3e590a38..7f116f98 100644 --- a/contrib/idn/mdnkit/mdnsproxy/winserv.c +++ b/contrib/idn/mdnkit/mdnsproxy/winserv.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ */ #ifndef lint -static char *rcsid = "$Id: winserv.c,v 1.1 2001/06/09 00:30:36 tale Exp $"; +static char *rcsid = "$Id: winserv.c,v 1.1.2.1 2002/02/08 12:15:06 marka Exp $"; #endif #ifdef WIN32 diff --git a/contrib/idn/mdnkit/mdnsproxy/winserv.h b/contrib/idn/mdnkit/mdnsproxy/winserv.h index 61496dff..a8f9ef42 100644 --- a/contrib/idn/mdnkit/mdnsproxy/winserv.h +++ b/contrib/idn/mdnkit/mdnsproxy/winserv.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -60,7 +60,7 @@ * jurisdiction and venue of Tokyo District Court of Japan. */ -/* $Id: winserv.h,v 1.1 2001/06/09 00:30:36 tale Exp $ */ +/* $Id: winserv.h,v 1.1.2.1 2002/02/08 12:15:08 marka Exp $ */ #ifndef WINSERV_H #define WINSERV_H 1 diff --git a/contrib/idn/mdnkit/mkinstalldirs b/contrib/idn/mdnkit/mkinstalldirs index d8d17b42..97eae651 100755 --- a/contrib/idn/mdnkit/mkinstalldirs +++ b/contrib/idn/mdnkit/mkinstalldirs @@ -4,7 +4,7 @@ # Created: 1993-05-16 # Public domain -# $Id: mkinstalldirs,v 1.1 2001/06/09 00:29:31 tale Exp $ +# $Id: mkinstalldirs,v 1.1.2.1 2002/02/08 12:12:34 marka Exp $ errstatus=0 diff --git a/contrib/idn/mdnkit/patch/bind9/bind-9.1.2-patch b/contrib/idn/mdnkit/patch/bind9/bind-9.1.3-patch index 49145db2..f950c87f 100644 --- a/contrib/idn/mdnkit/patch/bind9/bind-9.1.2-patch +++ b/contrib/idn/mdnkit/patch/bind9/bind-9.1.3-patch @@ -1,7 +1,7 @@ -MDN patch for bind-9.1.2 +MDN patch for bind-9.1.3 ======================== -This is a patch file for ISC BIND 9.1.2 to make it work with +This is a patch file for ISC BIND 9.1.3 to make it work with internationalized/multilingual domain names. With this patch you'll get MDN-aware dig/host/nslookup. @@ -16,12 +16,12 @@ and install. Index: README.mdnkit -diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.6 -*** README.mdnkit Mon May 21 16:25:43 2001 ---- README.mdnkit Thu Apr 26 14:04:09 2001 +diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.9 +*** README.mdnkit Mon Aug 27 19:18:29 2001 +--- README.mdnkit Wed Aug 22 15:19:31 2001 *************** *** 0 **** ---- 1,96 ---- +--- 1,124 ---- + + BIND-9 MDN patch + @@ -54,25 +54,53 @@ diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.6 + Run `configure' in the top directory. See `README' for the + configuration options. + -+ This patch adds the following 3 options to `configure'. You should ++ This patch adds the following 4 options to `configure'. You should + at least specify `--with-mdn' option to enable MDN support. + -+ --with-mdn[=PREFIX] -+ To enable MDN support, you have to specify `--with-mdn' -+ option. If you specified installation prefix other than -+ `/usr/local' (which is the default) when conifguring mDNkit, -+ also specify the prefix, like `--with-mdn=/usr/local/mdnkit'. ++ --with-mdn[=MDN_PREFIX] ++ To enable MDN support, you have to specify `--with-mdn' option. ++ The argument MDN_PREFIX is the install prefix of mDNkit. If ++ MDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX') ++ is assumed. + -+ --with-iconv=LIBSPEC ++ --with-libiconv[=LIBICONV_PREFIX] ++ Specify this option if mDNkit you have installed links GNU ++ libiconv. The argument LIBICONV_PREFIX is install prefix of ++ GNU libiconv. If the argument is omitted, PREFIX (derived ++ from `--prefix=PREFIX') is assumed. ++ ++ `--with-libiconv' is shorthand option for GNU libiconv. ++ ++ --with-libiconv=/usr/local ++ ++ This is equivalent to: ++ ++ --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' ++ ++ `--with-libiconv' assumes that your C compiler has `-R' ++ option, and that the option adds the specified run-time path ++ to an exacutable binary. If `-R' option of your compiler has ++ different meaning, or your compiler lacks the option, you ++ should use `--with-iconv' option instead. Binary command ++ without run-time path information might be unexecutable. ++ In that case, you would see an error message like: ++ ++ error in loading shared libraries: libiconv.so.2: cannot ++ open shared object file ++ ++ If both `--with-libiconv' and `--with-iconv' options are ++ specified, `--with-iconv' is prior to `--with-libiconv'. ++ ++ --with-iconv=ICONV_LIBSPEC + If your libc doens't provide iconv(), you need to specify the -+ library containing iconv() with this option. `LIBSPEC' is the -+ argument(s) to `cc' or `ld' to link the library, for example, -+ `--with-iconv="-L/usr/local/lib -liconv"'. ++ library containing iconv() with this option. `ICONV_LIBSPEC' ++ is the argument(s) to `cc' or `ld' to link the library, for ++ example, `--with-iconv="-L/usr/local/lib -liconv"'. + You don't need to specify the header file directory for "iconv.h" + to the compiler, as it isn't included directly by bind-9 with + this patch. + -+ --with-mdnlib=LIBSPEC ++ --with-mdnlib=MDN_LIBSPEC + With this option, you can explicitly specify the argument(s) + to `cc' or `ld' to link the mDNkit's library, `libmdn'. If + this option is not specified, `-L${PREFIX}/lib -lmdn' is @@ -117,11 +145,28 @@ diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.6 + mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively. + + -+ ; $Id: bind-9.1.2-patch,v 1.1 2001/06/09 00:30:36 tale Exp $ ++ ; $Id: bind-9.1.3-patch,v 1.1.2.1 2002/02/08 12:15:10 marka Exp $ Index: config.h.in -diff -c mdn/othersrc/bind9/config.h.in:1.1.1.5 mdn/othersrc/bind9/config.h.in:1.8 +diff -c mdn/othersrc/bind9/config.h.in:1.1.1.5 mdn/othersrc/bind9/config.h.in:1.9 *** config.h.in Tue Apr 17 14:17:01 2001 ---- config.h.in Thu Apr 26 13:54:40 2001 +--- config.h.in Thu Jul 26 16:44:20 2001 +*************** +*** 16,22 **** + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +! /* $Id: bind-9.1.3-patch,v 1.1.2.1 2002/02/08 12:15:10 marka Exp $ */ + + /*** + *** This file is not to be included by any public header files, because +--- 16,22 ---- + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +! /* $Id: bind-9.1.3-patch,v 1.1.2.1 2002/02/08 12:15:10 marka Exp $ */ + + /*** + *** This file is not to be included by any public header files, because *************** *** 132,137 **** --- 132,140 ---- @@ -136,19 +181,22 @@ diff -c mdn/othersrc/bind9/config.h.in:1.1.1.5 mdn/othersrc/bind9/config.h.in:1. *************** *** 141,146 **** ---- 144,152 ---- +--- 144,155 ---- /* Define if you have the <linux/prctl.h> header file. */ #undef HAVE_LINUX_PRCTL_H + /* Define if you have the <locale.h> header file. */ + #undef HAVE_LOCALE_H + ++ /* Define if you have the <sys/select.h> header file. */ ++ #undef HAVE_SYS_SELECT_H ++ /* Define if you have the <sys/sockio.h> header file. */ #undef HAVE_SYS_SOCKIO_H *************** *** 158,160 **** ---- 164,170 ---- +--- 167,173 ---- /* Define if you have the socket library (-lsocket). */ #undef HAVE_LIBSOCKET @@ -157,17 +205,36 @@ diff -c mdn/othersrc/bind9/config.h.in:1.1.1.5 mdn/othersrc/bind9/config.h.in:1. + #undef WITH_MDN + Index: configure -diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 -*** configure Tue Apr 17 14:17:03 2001 ---- configure Tue Apr 17 17:31:12 2001 +diff -c mdn/othersrc/bind9/configure:1.1.1.7 mdn/othersrc/bind9/configure:1.10 +*** configure Thu Jul 26 15:43:19 2001 +--- configure Thu Jul 26 16:44:20 2001 +*************** +*** 15,21 **** + # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +! # From configure.in Revision: 1.205.2.8 + + ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- + ## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc. +--- 15,21 ---- + # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +! # From configure.in Revision: 1.205.2.9 + + ## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*- + ## Copyright (C) 1996-1999, 2000 Free Software Foundation, Inc. *************** *** 153,158 **** ---- 153,164 ---- +--- 153,166 ---- --enable-ipv6 use IPv6 [default=autodetect]" ac_help="$ac_help --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]" + ac_help="$ac_help -+ --with-mdn[=PREFIX] enable MDN support using mDNkit [default prefix /usr/local]" ++ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]" ++ ac_help="$ac_help ++ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]" + ac_help="$ac_help + --with-iconv[=LIBSPEC] specify iconv library [default -liconv]" + ac_help="$ac_help @@ -184,11 +251,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 host_alias=$host case "$host_alias" in ---- 699,705 ---- +--- 701,707 ---- fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -! echo "configure:703: checking host system type" >&5 +! echo "configure:705: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -201,11 +268,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 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 ---- 721,727 ---- +--- 723,729 ---- echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -! echo "configure:725: checking whether ${MAKE-make} sets \${MAKE}" >&5 +! echo "configure:727: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -218,11 +285,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 750,756 ---- +--- 752,758 ---- # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:754: checking for $ac_word" >&5 +! echo "configure:756: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -235,11 +302,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 789,795 ---- +--- 791,797 ---- # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -! echo "configure:793: checking for a BSD compatible install" >&5 +! echo "configure:795: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -252,11 +319,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 850,856 ---- +--- 852,858 ---- # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:854: checking for $ac_word" >&5 +! echo "configure:856: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -269,11 +336,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 906,912 ---- +--- 908,914 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:910: checking for $ac_word" >&5 +! echo "configure:912: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -286,329 +353,329 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 951,957 ---- +--- 953,959 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:955: checking for $ac_word" >&5 +! echo "configure:957: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 1093,1106 **** - # Find the machine's endian flavor. - # - echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -! echo "configure:1097: 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 1104 "configure" - #include "confdefs.h" - #include <sys/types.h> - #include <sys/param.h> ---- 1099,1112 ---- - # Find the machine's endian flavor. - # - echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -! echo "configure:1103: 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 1110 "configure" - #include "confdefs.h" - #include <sys/types.h> - #include <sys/param.h> -*************** -*** 1111,1121 **** - #endif - ; return 0; } - EOF -! if { (eval echo configure:1115: \"$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 1119 "configure" - #include "confdefs.h" - #include <sys/types.h> - #include <sys/param.h> ---- 1117,1127 ---- - #endif - ; return 0; } - EOF -! if { (eval echo configure:1121: \"$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 1125 "configure" - #include "confdefs.h" - #include <sys/types.h> - #include <sys/param.h> -*************** -*** 1126,1132 **** - #endif - ; return 0; } - EOF -! if { (eval echo configure:1130: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_bigendian=yes - else ---- 1132,1138 ---- - #endif - ; return 0; } - EOF -! if { (eval echo configure:1136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_bigendian=yes - else -*************** -*** 1146,1152 **** - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } - else - cat > conftest.$ac_ext <<EOF -! #line 1150 "configure" - #include "confdefs.h" - main () { - /* Are we little or big endian? From Harbison&Steele. */ ---- 1152,1158 ---- - { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } - else - cat > conftest.$ac_ext <<EOF -! #line 1156 "configure" - #include "confdefs.h" - main () { - /* Are we little or big endian? From Harbison&Steele. */ -*************** -*** 1159,1165 **** - exit (u.c[sizeof (long) - 1] == 1); - } - EOF -! if { (eval echo configure:1163: \"$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 ---- 1165,1171 ---- - exit (u.c[sizeof (long) - 1] == 1); - } - EOF -! if { (eval echo configure:1169: \"$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 -*************** -*** 1187,1193 **** +*** 1093,1099 **** # was --with-openssl specified? # echo $ac_n "checking for compatible OpenSSL library""... $ac_c" 1>&6 -! echo "configure:1191: checking for compatible OpenSSL library" >&5 +! echo "configure:1097: checking for compatible OpenSSL library" >&5 # Check whether --with-openssl or --without-openssl was given. if test "${with_openssl+set}" = set; then withval="$with_openssl" ---- 1193,1199 ---- +--- 1101,1107 ---- # was --with-openssl specified? # echo $ac_n "checking for compatible OpenSSL library""... $ac_c" 1>&6 -! echo "configure:1197: checking for compatible OpenSSL library" >&5 +! echo "configure:1105: checking for compatible OpenSSL library" >&5 # Check whether --with-openssl or --without-openssl was given. if test "${with_openssl+set}" = set; then withval="$with_openssl" *************** -*** 1278,1284 **** +*** 1184,1190 **** # was --with-randomdev specified? # echo $ac_n "checking for random device""... $ac_c" 1>&6 -! echo "configure:1282: checking for random device" >&5 +! echo "configure:1188: checking for random device" >&5 # Check whether --with-randomdev or --without-randomdev was given. if test "${with_randomdev+set}" = set; then withval="$with_randomdev" ---- 1284,1290 ---- +--- 1192,1198 ---- # was --with-randomdev specified? # echo $ac_n "checking for random device""... $ac_c" 1>&6 -! echo "configure:1288: checking for random device" >&5 +! echo "configure:1196: checking for random device" >&5 # Check whether --with-randomdev or --without-randomdev was given. if test "${with_randomdev+set}" = set; then withval="$with_randomdev" *************** -*** 1325,1331 **** +*** 1231,1237 **** # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:1329: checking for $ac_word" >&5 +! echo "configure:1235: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 1331,1337 ---- +--- 1239,1245 ---- # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:1335: checking for $ac_word" >&5 +! echo "configure:1243: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 1355,1361 **** +*** 1261,1267 **** # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:1359: checking for $ac_word" >&5 +! echo "configure:1265: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 1361,1367 ---- +--- 1269,1275 ---- # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:1365: checking for $ac_word" >&5 +! echo "configure:1273: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 1406,1412 **** +*** 1312,1318 **** # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:1410: checking for $ac_word" >&5 +! echo "configure:1316: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 1412,1418 ---- +--- 1320,1326 ---- # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:1416: checking for $ac_word" >&5 +! echo "configure:1324: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 1438,1444 **** +*** 1344,1350 **** fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -! echo "configure:1442: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +! echo "configure:1348: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ---- 1444,1450 ---- +--- 1352,1358 ---- fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -! echo "configure:1448: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +! echo "configure:1356: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. *************** -*** 1449,1460 **** +*** 1355,1366 **** cat > conftest.$ac_ext << EOF -! #line 1453 "configure" +! #line 1359 "configure" #include "confdefs.h" main(){return(0);} EOF -! if { (eval echo configure:1458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:1364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ---- 1455,1466 ---- +--- 1363,1374 ---- cat > conftest.$ac_ext << EOF -! #line 1459 "configure" +! #line 1367 "configure" #include "confdefs.h" main(){return(0);} EOF -! if { (eval echo configure:1464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:1372: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then *************** -*** 1480,1491 **** +*** 1386,1397 **** { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -! echo "configure:1484: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +! echo "configure:1390: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -! echo "configure:1489: checking whether we are using GNU C" >&5 +! echo "configure:1395: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 1486,1497 ---- +--- 1394,1405 ---- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -! echo "configure:1490: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +! echo "configure:1398: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -! echo "configure:1495: checking whether we are using GNU C" >&5 +! echo "configure:1403: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 1494,1500 **** +*** 1400,1406 **** yes; #endif EOF -! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no ---- 1500,1506 ---- +--- 1408,1414 ---- yes; #endif EOF -! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1504: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1412: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no *************** -*** 1513,1519 **** +*** 1419,1425 **** ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -! echo "configure:1517: checking whether ${CC-cc} accepts -g" >&5 +! echo "configure:1423: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 1519,1525 ---- +--- 1427,1433 ---- ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -! echo "configure:1523: checking whether ${CC-cc} accepts -g" >&5 +! echo "configure:1431: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 1549,1555 **** +*** 1455,1461 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:1553: checking for $ac_word" >&5 +! echo "configure:1459: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 1555,1561 ---- +--- 1463,1469 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:1559: checking for $ac_word" >&5 +! echo "configure:1467: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** +*** 1490,1503 **** + # Find the machine's endian flavor. + # + echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +! echo "configure:1494: checking whether byte ordering is bigendian" >&5 + if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_bigendian=unknown + # See if sys/param.h defines the BYTE_ORDER macro. + cat > conftest.$ac_ext <<EOF +! #line 1501 "configure" + #include "confdefs.h" + #include <sys/types.h> + #include <sys/param.h> +--- 1498,1511 ---- + # Find the machine's endian flavor. + # + echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +! echo "configure:1502: checking whether byte ordering is bigendian" >&5 + if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + ac_cv_c_bigendian=unknown + # See if sys/param.h defines the BYTE_ORDER macro. + cat > conftest.$ac_ext <<EOF +! #line 1509 "configure" + #include "confdefs.h" + #include <sys/types.h> + #include <sys/param.h> +*************** +*** 1508,1518 **** + #endif + ; return 0; } + EOF +! if { (eval echo configure:1512: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # It does; now see whether it defined to BIG_ENDIAN or not. + cat > conftest.$ac_ext <<EOF +! #line 1516 "configure" + #include "confdefs.h" + #include <sys/types.h> + #include <sys/param.h> +--- 1516,1526 ---- + #endif + ; return 0; } + EOF +! if { (eval echo configure:1520: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # It does; now see whether it defined to BIG_ENDIAN or not. + cat > conftest.$ac_ext <<EOF +! #line 1524 "configure" + #include "confdefs.h" + #include <sys/types.h> + #include <sys/param.h> +*************** +*** 1523,1529 **** + #endif + ; return 0; } + EOF +! if { (eval echo configure:1527: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes + else +--- 1531,1537 ---- + #endif + ; return 0; } + EOF +! if { (eval echo configure:1535: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes + else +*************** +*** 1543,1549 **** + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 1547 "configure" + #include "confdefs.h" + main () { + /* Are we little or big endian? From Harbison&Steele. */ +--- 1551,1557 ---- + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 1555 "configure" + #include "confdefs.h" + main () { + /* Are we little or big endian? From Harbison&Steele. */ +*************** +*** 1556,1562 **** + exit (u.c[sizeof (long) - 1] == 1); + } + EOF +! if { (eval echo configure:1560: \"$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 +--- 1564,1570 ---- + exit (u.c[sizeof (long) - 1] == 1); + } + EOF +! if { (eval echo configure:1568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + ac_cv_c_bigendian=no + else +*************** *** 1581,1587 **** @@ -617,11 +684,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= ---- 1587,1593 ---- +--- 1589,1595 ---- echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -! echo "configure:1591: checking how to run the C preprocessor" >&5 +! echo "configure:1593: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -640,17 +707,17 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : ---- 1602,1614 ---- +--- 1604,1616 ---- # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext <<EOF -! #line 1606 "configure" +! #line 1608 "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:1612: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +! { (eval echo configure:1614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -669,17 +736,17 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : ---- 1619,1631 ---- +--- 1621,1633 ---- rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -! #line 1623 "configure" +! #line 1625 "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:1629: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +! { (eval echo configure:1631: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -698,17 +765,17 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : ---- 1636,1648 ---- +--- 1638,1650 ---- rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext <<EOF -! #line 1640 "configure" +! #line 1642 "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:1646: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +! { (eval echo configure:1648: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -726,16 +793,16 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> ---- 1667,1678 ---- +--- 1669,1680 ---- echo "$ac_t""$CPP" 1>&6 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -! echo "configure:1671: checking for ANSI C header files" >&5 +! echo "configure:1673: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 1676 "configure" +! #line 1678 "configure" #include "confdefs.h" #include <stdlib.h> #include <stdarg.h> @@ -748,11 +815,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* ---- 1680,1686 ---- +--- 1682,1688 ---- #include <float.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -! { (eval echo configure:1684: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +! { (eval echo configure:1686: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -765,11 +832,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 #include "confdefs.h" #include <string.h> EOF ---- 1697,1703 ---- +--- 1699,1705 ---- if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext <<EOF -! #line 1701 "configure" +! #line 1703 "configure" #include "confdefs.h" #include <string.h> EOF @@ -782,11 +849,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 #include "confdefs.h" #include <stdlib.h> EOF ---- 1715,1721 ---- +--- 1717,1723 ---- if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext <<EOF -! #line 1719 "configure" +! #line 1721 "configure" #include "confdefs.h" #include <stdlib.h> EOF @@ -799,11 +866,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ---- 1736,1742 ---- +--- 1738,1744 ---- : else cat > conftest.$ac_ext <<EOF -! #line 1740 "configure" +! #line 1742 "configure" #include "confdefs.h" #include <ctype.h> #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -816,11 +883,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 then : else ---- 1747,1753 ---- +--- 1749,1755 ---- exit (0); } EOF -! if { (eval echo configure:1751: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +! if { (eval echo configure:1753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -843,21 +910,21 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* ---- 1775,1791 ---- +--- 1777,1793 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -! echo "configure:1779: checking for $ac_hdr" >&5 +! echo "configure:1781: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 1784 "configure" +! #line 1786 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -! { (eval echo configure:1789: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +! { (eval echo configure:1791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -875,16 +942,16 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 #include "confdefs.h" int main() { ---- 1813,1824 ---- +--- 1815,1826 ---- echo $ac_n "checking for working const""... $ac_c" 1>&6 -! echo "configure:1817: checking for working const" >&5 +! echo "configure:1819: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 1822 "configure" +! #line 1824 "configure" #include "confdefs.h" int main() { @@ -897,11 +964,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 rm -rf conftest* ac_cv_c_const=yes else ---- 1867,1873 ---- +--- 1869,1875 ---- ; return 0; } EOF -! if { (eval echo configure:1871: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:1873: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -928,25 +995,25 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 rm -rf conftest* ac_cv_c_inline=$ac_kw; break else ---- 1888,1908 ---- +--- 1890,1910 ---- fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -! echo "configure:1892: checking for inline" >&5 +! echo "configure:1894: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <<EOF -! #line 1899 "configure" +! #line 1901 "configure" #include "confdefs.h" int main() { } $ac_kw foo() { ; return 0; } EOF -! if { (eval echo configure:1906: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:1908: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -964,16 +1031,16 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS ---- 1928,1939 ---- +--- 1930,1941 ---- esac echo $ac_n "checking for size_t""... $ac_c" 1>&6 -! echo "configure:1932: checking for size_t" >&5 +! echo "configure:1934: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 1937 "configure" +! #line 1939 "configure" #include "confdefs.h" #include <sys/types.h> #if STDC_HEADERS @@ -991,16 +1058,16 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 #include "confdefs.h" #include <sys/types.h> #include <sys/time.h> ---- 1961,1972 ---- +--- 1963,1974 ---- fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -! echo "configure:1965: checking whether time.h and sys/time.h may both be included" >&5 +! echo "configure:1967: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 1970 "configure" +! #line 1972 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/time.h> @@ -1013,2285 +1080,2435 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 rm -rf conftest* ac_cv_header_time=yes else ---- 1975,1981 ---- +--- 1977,1983 ---- struct tm *tp; ; return 0; } EOF -! if { (eval echo configure:1979: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:1981: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else *************** -*** 1996,2002 **** +*** 1996,2004 **** + case $ac_cv_header_unistd_h in + yes) + echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6 +! echo "configure:2000: checking if unistd.h defines fd_set" >&5 + cat > conftest.$ac_ext <<EOF +! #line 2002 "configure" + #include "confdefs.h" + + #include <unistd.h> +--- 2004,2012 ---- + case $ac_cv_header_unistd_h in + yes) + echo $ac_n "checking if unistd.h defines fd_set""... $ac_c" 1>&6 +! echo "configure:2008: checking if unistd.h defines fd_set" >&5 + cat > conftest.$ac_ext <<EOF +! #line 2010 "configure" + #include "confdefs.h" + + #include <unistd.h> +*************** +*** 2006,2012 **** + fd_set read_set; return (0); + ; return 0; } + EOF +! if { (eval echo configure:2010: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" +--- 2014,2020 ---- + fd_set read_set; return (0); + ; return 0; } + EOF +! if { (eval echo configure:2018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_NEEDSYSSELECTH="#undef ISC_PLATFORM_NEEDSYSSELECTH" +*************** +*** 2049,2055 **** # First, decide whether to use multithreading or not. # echo $ac_n "checking whether to look for thread support""... $ac_c" 1>&6 -! echo "configure:2000: checking whether to look for thread support" >&5 +! echo "configure:2053: checking whether to look for thread support" >&5 # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then enableval="$enable_threads" ---- 2002,2008 ---- +--- 2057,2063 ---- # First, decide whether to use multithreading or not. # echo $ac_n "checking whether to look for thread support""... $ac_c" 1>&6 -! echo "configure:2006: checking whether to look for thread support" >&5 +! echo "configure:2061: checking whether to look for thread support" >&5 # Check whether --enable-threads or --disable-threads was given. if test "${enable_threads+set}" = set; then enableval="$enable_threads" *************** -*** 2033,2039 **** +*** 2086,2092 **** # experiment with it. CC="gcc" echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6 -! echo "configure:2037: checking which NetBSD thread library to use" >&5 +! echo "configure:2090: checking which NetBSD thread library to use" >&5 # Check whether --with-ptl2 or --without-ptl2 was given. if test "${with_ptl2+set}" = set; then ---- 2039,2045 ---- +--- 2094,2100 ---- # experiment with it. CC="gcc" echo $ac_n "checking which NetBSD thread library to use""... $ac_c" 1>&6 -! echo "configure:2043: checking which NetBSD thread library to use" >&5 +! echo "configure:2098: checking which NetBSD thread library to use" >&5 # Check whether --with-ptl2 or --without-ptl2 was given. if test "${with_ptl2+set}" = set; then *************** -*** 2072,2078 **** +*** 2125,2131 **** ;; *) echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 -! echo "configure:2076: checking for pthread_create in -lpthread" >&5 +! echo "configure:2129: checking for pthread_create in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2078,2084 ---- +--- 2133,2139 ---- ;; *) echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 -! echo "configure:2082: checking for pthread_create in -lpthread" >&5 +! echo "configure:2137: checking for pthread_create in -lpthread" >&5 ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2080,2086 **** +*** 2133,2139 **** ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2084 "configure" +! #line 2137 "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 ---- 2086,2092 ---- +--- 2141,2147 ---- ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2090 "configure" +! #line 2145 "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 *************** -*** 2091,2097 **** +*** 2144,2150 **** pthread_create() ; return 0; } EOF -! if { (eval echo configure:2095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2148: \"$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 ---- 2097,2103 ---- +--- 2152,2158 ---- pthread_create() ; return 0; } EOF -! if { (eval echo configure:2101: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2117,2123 **** +*** 2170,2176 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6 -! echo "configure:2121: checking for __pthread_create in -lpthread" >&5 +! echo "configure:2174: checking for __pthread_create in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2123,2129 ---- +--- 2178,2184 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for __pthread_create in -lpthread""... $ac_c" 1>&6 -! echo "configure:2127: checking for __pthread_create in -lpthread" >&5 +! echo "configure:2182: checking for __pthread_create in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2125,2131 **** +*** 2178,2184 **** ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2129 "configure" +! #line 2182 "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 ---- 2131,2137 ---- +--- 2186,2192 ---- ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2135 "configure" +! #line 2190 "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 *************** -*** 2136,2142 **** +*** 2189,2195 **** __pthread_create() ; return 0; } EOF -! if { (eval echo configure:2140: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2193: \"$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 ---- 2142,2148 ---- +--- 2197,2203 ---- __pthread_create() ; return 0; } EOF -! if { (eval echo configure:2146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2162,2168 **** +*** 2215,2221 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6 -! echo "configure:2166: checking for __pthread_create_system in -lpthread" >&5 +! echo "configure:2219: checking for __pthread_create_system in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2168,2174 ---- +--- 2223,2229 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for __pthread_create_system in -lpthread""... $ac_c" 1>&6 -! echo "configure:2172: checking for __pthread_create_system in -lpthread" >&5 +! echo "configure:2227: checking for __pthread_create_system in -lpthread" >&5 ac_lib_var=`echo pthread'_'__pthread_create_system | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2170,2176 **** +*** 2223,2229 **** ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2174 "configure" +! #line 2227 "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 ---- 2176,2182 ---- +--- 2231,2237 ---- ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2180 "configure" +! #line 2235 "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 *************** -*** 2181,2187 **** +*** 2234,2240 **** __pthread_create_system() ; return 0; } EOF -! if { (eval echo configure:2185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2238: \"$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 ---- 2187,2193 ---- +--- 2242,2248 ---- __pthread_create_system() ; return 0; } EOF -! if { (eval echo configure:2191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2207,2213 **** +*** 2260,2266 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6 -! echo "configure:2211: checking for pthread_create in -lc_r" >&5 +! echo "configure:2264: checking for pthread_create in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2213,2219 ---- +--- 2268,2274 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6 -! echo "configure:2217: checking for pthread_create in -lc_r" >&5 +! echo "configure:2272: checking for pthread_create in -lc_r" >&5 ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2215,2221 **** +*** 2268,2274 **** ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2219 "configure" +! #line 2272 "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 ---- 2221,2227 ---- +--- 2276,2282 ---- ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2225 "configure" +! #line 2280 "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 *************** -*** 2226,2232 **** +*** 2279,2285 **** pthread_create() ; return 0; } EOF -! if { (eval echo configure:2230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2283: \"$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 ---- 2232,2238 ---- +--- 2287,2293 ---- pthread_create() ; return 0; } EOF -! if { (eval echo configure:2236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2291: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2252,2258 **** +*** 2305,2311 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6 -! echo "configure:2256: checking for pthread_create in -lc" >&5 +! echo "configure:2309: checking for pthread_create in -lc" >&5 ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2258,2264 ---- +--- 2313,2319 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for pthread_create in -lc""... $ac_c" 1>&6 -! echo "configure:2262: checking for pthread_create in -lc" >&5 +! echo "configure:2317: checking for pthread_create in -lc" >&5 ac_lib_var=`echo c'_'pthread_create | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2260,2266 **** +*** 2313,2319 **** ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2264 "configure" +! #line 2317 "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 ---- 2266,2272 ---- +--- 2321,2327 ---- ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2270 "configure" +! #line 2325 "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 *************** -*** 2271,2277 **** +*** 2324,2330 **** pthread_create() ; return 0; } EOF -! if { (eval echo configure:2275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2328: \"$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 ---- 2277,2283 ---- +--- 2332,2338 ---- pthread_create() ; return 0; } EOF -! if { (eval echo configure:2281: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2317,2323 **** +*** 2370,2376 **** # We'd like to use sigwait() too # echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6 -! echo "configure:2321: checking for sigwait in -lc" >&5 +! echo "configure:2374: checking for sigwait in -lc" >&5 ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2323,2329 ---- +--- 2378,2384 ---- # We'd like to use sigwait() too # echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6 -! echo "configure:2327: checking for sigwait in -lc" >&5 +! echo "configure:2382: checking for sigwait in -lc" >&5 ac_lib_var=`echo c'_'sigwait | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2325,2331 **** +*** 2378,2384 **** ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2329 "configure" +! #line 2382 "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 ---- 2331,2337 ---- +--- 2386,2392 ---- ac_save_LIBS="$LIBS" LIBS="-lc $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2335 "configure" +! #line 2390 "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 *************** -*** 2336,2342 **** +*** 2389,2395 **** sigwait() ; return 0; } EOF -! if { (eval echo configure:2340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2393: \"$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 ---- 2342,2348 ---- +--- 2397,2403 ---- sigwait() ; return 0; } EOF -! if { (eval echo configure:2346: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2358,2364 **** +*** 2411,2417 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6 -! echo "configure:2362: checking for sigwait in -lpthread" >&5 +! echo "configure:2415: checking for sigwait in -lpthread" >&5 ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2364,2370 ---- +--- 2419,2425 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for sigwait in -lpthread""... $ac_c" 1>&6 -! echo "configure:2368: checking for sigwait in -lpthread" >&5 +! echo "configure:2423: checking for sigwait in -lpthread" >&5 ac_lib_var=`echo pthread'_'sigwait | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2366,2372 **** +*** 2419,2425 **** ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2370 "configure" +! #line 2423 "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 ---- 2372,2378 ---- +--- 2427,2433 ---- ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2376 "configure" +! #line 2431 "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 *************** -*** 2377,2383 **** +*** 2430,2436 **** sigwait() ; return 0; } EOF -! if { (eval echo configure:2381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2434: \"$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 ---- 2383,2389 ---- +--- 2438,2444 ---- sigwait() ; return 0; } EOF -! if { (eval echo configure:2387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2442: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2399,2405 **** +*** 2452,2458 **** else echo "$ac_t""no" 1>&6 echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6 -! echo "configure:2403: checking for _Psigwait in -lpthread" >&5 +! echo "configure:2456: checking for _Psigwait in -lpthread" >&5 ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2405,2411 ---- +--- 2460,2466 ---- else echo "$ac_t""no" 1>&6 echo $ac_n "checking for _Psigwait in -lpthread""... $ac_c" 1>&6 -! echo "configure:2409: checking for _Psigwait in -lpthread" >&5 +! echo "configure:2464: checking for _Psigwait in -lpthread" >&5 ac_lib_var=`echo pthread'_'_Psigwait | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2407,2413 **** +*** 2460,2466 **** ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2411 "configure" +! #line 2464 "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 ---- 2413,2419 ---- +--- 2468,2474 ---- ac_save_LIBS="$LIBS" LIBS="-lpthread $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2417 "configure" +! #line 2472 "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 *************** -*** 2418,2424 **** +*** 2471,2477 **** _Psigwait() ; return 0; } EOF -! if { (eval echo configure:2422: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2475: \"$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 ---- 2424,2430 ---- +--- 2479,2485 ---- _Psigwait() ; return 0; } EOF -! if { (eval echo configure:2428: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2448,2459 **** +*** 2501,2512 **** echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&6 -! echo "configure:2452: checking for pthread_attr_getstacksize" >&5 +! echo "configure:2505: checking for pthread_attr_getstacksize" >&5 if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2457 "configure" +! #line 2510 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char pthread_attr_getstacksize(); below. */ ---- 2454,2465 ---- +--- 2509,2520 ---- echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&6 -! echo "configure:2458: checking for pthread_attr_getstacksize" >&5 +! echo "configure:2513: checking for pthread_attr_getstacksize" >&5 if eval "test \"`echo '$''{'ac_cv_func_pthread_attr_getstacksize'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2463 "configure" +! #line 2518 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char pthread_attr_getstacksize(); below. */ *************** -*** 2476,2482 **** +*** 2529,2535 **** ; return 0; } EOF -! if { (eval echo configure:2480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2533: \"$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 ---- 2482,2488 ---- +--- 2537,2543 ---- ; return 0; } EOF -! if { (eval echo configure:2486: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_pthread_attr_getstacksize=yes" else *************** -*** 2508,2514 **** +*** 2561,2567 **** # *-freebsd*) echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6 -! echo "configure:2512: checking for sigwait in -lc_r" >&5 +! echo "configure:2565: checking for sigwait in -lc_r" >&5 ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2514,2520 ---- +--- 2569,2575 ---- # *-freebsd*) echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6 -! echo "configure:2518: checking for sigwait in -lc_r" >&5 +! echo "configure:2573: checking for sigwait in -lc_r" >&5 ac_lib_var=`echo c_r'_'sigwait | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2516,2522 **** +*** 2569,2575 **** ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2520 "configure" +! #line 2573 "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 ---- 2522,2528 ---- +--- 2577,2583 ---- ac_save_LIBS="$LIBS" LIBS="-lc_r $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2526 "configure" +! #line 2581 "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 *************** -*** 2527,2533 **** +*** 2580,2586 **** sigwait() ; return 0; } EOF -! if { (eval echo configure:2531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2584: \"$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 ---- 2533,2539 ---- +--- 2588,2594 ---- sigwait() ; return 0; } EOF -! if { (eval echo configure:2537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2582,2593 **** +*** 2635,2646 **** EOF echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&6 -! echo "configure:2586: checking for pthread_setconcurrency" >&5 +! echo "configure:2639: checking for pthread_setconcurrency" >&5 if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2591 "configure" +! #line 2644 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char pthread_setconcurrency(); below. */ ---- 2588,2599 ---- +--- 2643,2654 ---- EOF echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&6 -! echo "configure:2592: checking for pthread_setconcurrency" >&5 +! echo "configure:2647: checking for pthread_setconcurrency" >&5 if eval "test \"`echo '$''{'ac_cv_func_pthread_setconcurrency'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2597 "configure" +! #line 2652 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char pthread_setconcurrency(); below. */ *************** -*** 2610,2616 **** +*** 2663,2669 **** ; return 0; } EOF -! if { (eval echo configure:2614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2667: \"$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 ---- 2616,2622 ---- +--- 2671,2677 ---- ; return 0; } EOF -! if { (eval echo configure:2620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2675: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_pthread_setconcurrency=yes" else *************** -*** 2648,2659 **** +*** 2701,2712 **** # Look for sysconf to allow detection of the number of processors. # echo $ac_n "checking for sysconf""... $ac_c" 1>&6 -! echo "configure:2652: checking for sysconf" >&5 +! echo "configure:2705: checking for sysconf" >&5 if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2657 "configure" +! #line 2710 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char sysconf(); below. */ ---- 2654,2665 ---- +--- 2709,2720 ---- # Look for sysconf to allow detection of the number of processors. # echo $ac_n "checking for sysconf""... $ac_c" 1>&6 -! echo "configure:2658: checking for sysconf" >&5 +! echo "configure:2713: checking for sysconf" >&5 if eval "test \"`echo '$''{'ac_cv_func_sysconf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2663 "configure" +! #line 2718 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char sysconf(); below. */ *************** -*** 2676,2682 **** +*** 2729,2735 **** ; return 0; } EOF -! if { (eval echo configure:2680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2733: \"$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 ---- 2682,2688 ---- +--- 2737,2743 ---- ; return 0; } EOF -! if { (eval echo configure:2686: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2741: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_sysconf=yes" else *************** -*** 2753,2764 **** +*** 2806,2817 **** # even if compiled with --disable-threads. # echo $ac_n "checking for flockfile""... $ac_c" 1>&6 -! echo "configure:2757: checking for flockfile" >&5 +! echo "configure:2810: checking for flockfile" >&5 if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2762 "configure" +! #line 2815 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char flockfile(); below. */ ---- 2759,2770 ---- +--- 2814,2825 ---- # even if compiled with --disable-threads. # echo $ac_n "checking for flockfile""... $ac_c" 1>&6 -! echo "configure:2763: checking for flockfile" >&5 +! echo "configure:2818: checking for flockfile" >&5 if eval "test \"`echo '$''{'ac_cv_func_flockfile'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2768 "configure" +! #line 2823 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char flockfile(); below. */ *************** -*** 2781,2787 **** +*** 2834,2840 **** ; return 0; } EOF -! if { (eval echo configure:2785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2838: \"$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 ---- 2787,2793 ---- +--- 2842,2848 ---- ; return 0; } EOF -! if { (eval echo configure:2791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2846: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_flockfile=yes" else *************** -*** 2808,2814 **** +*** 2861,2867 **** # Indicate what the final decision was regarding threads. # echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6 -! echo "configure:2812: checking whether to build with threads" >&5 +! echo "configure:2865: checking whether to build with threads" >&5 if $use_threads; then echo "$ac_t""yes" 1>&6 else ---- 2814,2820 ---- +--- 2869,2875 ---- # Indicate what the final decision was regarding threads. # echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6 -! echo "configure:2818: checking whether to build with threads" >&5 +! echo "configure:2873: checking whether to build with threads" >&5 if $use_threads; then echo "$ac_t""yes" 1>&6 else *************** -*** 2884,2895 **** +*** 2937,2948 **** # NLS # echo $ac_n "checking for catgets""... $ac_c" 1>&6 -! echo "configure:2888: checking for catgets" >&5 +! echo "configure:2941: checking for catgets" >&5 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2893 "configure" +! #line 2946 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char catgets(); below. */ ---- 2890,2901 ---- +--- 2945,2956 ---- # NLS # echo $ac_n "checking for catgets""... $ac_c" 1>&6 -! echo "configure:2894: checking for catgets" >&5 +! echo "configure:2949: checking for catgets" >&5 if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 2899 "configure" +! #line 2954 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char catgets(); below. */ *************** -*** 2912,2918 **** +*** 2965,2971 **** ; return 0; } EOF -! if { (eval echo configure:2916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2969: \"$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 ---- 2918,2924 ---- +--- 2973,2979 ---- ; return 0; } EOF -! if { (eval echo configure:2922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:2977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_catgets=yes" else *************** -*** 2950,2956 **** +*** 3003,3009 **** ;; *) echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -! echo "configure:2954: checking for socket in -lsocket" >&5 +! echo "configure:3007: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 2956,2962 ---- +--- 3011,3017 ---- ;; *) echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -! echo "configure:2960: checking for socket in -lsocket" >&5 +! echo "configure:3015: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 2958,2964 **** +*** 3011,3017 **** ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2962 "configure" +! #line 3015 "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 ---- 2964,2970 ---- +--- 3019,3025 ---- ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <<EOF -! #line 2968 "configure" +! #line 3023 "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 *************** -*** 2969,2975 **** +*** 3022,3028 **** socket() ; return 0; } EOF -! if { (eval echo configure:2973: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3026: \"$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 ---- 2975,2981 ---- +--- 3030,3036 ---- socket() ; return 0; } EOF -! if { (eval echo configure:2979: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 2997,3003 **** +*** 3050,3056 **** fi echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6 -! echo "configure:3001: checking for inet_ntoa in -lnsl" >&5 +! echo "configure:3054: checking for inet_ntoa in -lnsl" >&5 ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 3003,3009 ---- +--- 3058,3064 ---- fi echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6 -! echo "configure:3007: checking for inet_ntoa in -lnsl" >&5 +! echo "configure:3062: checking for inet_ntoa in -lnsl" >&5 ac_lib_var=`echo nsl'_'inet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 3005,3011 **** +*** 3058,3064 **** ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <<EOF -! #line 3009 "configure" +! #line 3062 "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 ---- 3011,3017 ---- +--- 3066,3072 ---- ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <<EOF -! #line 3015 "configure" +! #line 3070 "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 *************** -*** 3016,3022 **** +*** 3069,3075 **** inet_ntoa() ; return 0; } EOF -! if { (eval echo configure:3020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3073: \"$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 ---- 3022,3028 ---- +--- 3077,3083 ---- inet_ntoa() ; return 0; } EOF -! if { (eval echo configure:3026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else *************** -*** 3131,3137 **** +*** 3184,3190 **** fi echo $ac_n "checking build system type""... $ac_c" 1>&6 -! echo "configure:3135: checking build system type" >&5 +! echo "configure:3188: checking build system type" >&5 build_alias=$build case "$build_alias" in ---- 3137,3143 ---- +--- 3192,3198 ---- fi echo $ac_n "checking build system type""... $ac_c" 1>&6 -! echo "configure:3141: checking build system type" >&5 +! echo "configure:3196: checking build system type" >&5 build_alias=$build case "$build_alias" in *************** -*** 3160,3166 **** +*** 3213,3219 **** if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -! echo "configure:3164: checking for ld used by GCC" >&5 +! echo "configure:3217: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. ---- 3166,3172 ---- +--- 3221,3227 ---- if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -! echo "configure:3170: checking for ld used by GCC" >&5 +! echo "configure:3225: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. *************** -*** 3184,3193 **** +*** 3237,3246 **** esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -! echo "configure:3188: checking for GNU ld" >&5 +! echo "configure:3241: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -! echo "configure:3191: checking for non-GNU ld" >&5 +! echo "configure:3244: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 ---- 3190,3199 ---- +--- 3245,3254 ---- esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -! echo "configure:3194: checking for GNU ld" >&5 +! echo "configure:3249: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -! echo "configure:3197: checking for non-GNU ld" >&5 +! echo "configure:3252: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 *************** -*** 3222,3228 **** +*** 3275,3281 **** fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -! echo "configure:3226: checking if the linker ($LD) is GNU ld" >&5 +! echo "configure:3279: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 3228,3234 ---- +--- 3283,3289 ---- fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -! echo "configure:3232: checking if the linker ($LD) is GNU ld" >&5 +! echo "configure:3287: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 3238,3244 **** +*** 3291,3297 **** echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -! echo "configure:3242: checking for BSD-compatible nm" >&5 +! echo "configure:3295: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 3244,3250 ---- +--- 3299,3305 ---- echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -! echo "configure:3248: checking for BSD-compatible nm" >&5 +! echo "configure:3303: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 3274,3280 **** +*** 3327,3333 **** echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -! echo "configure:3278: checking whether ln -s works" >&5 +! echo "configure:3331: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 3280,3286 ---- +--- 3335,3341 ---- echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -! echo "configure:3284: checking whether ln -s works" >&5 +! echo "configure:3339: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 3323,3330 **** +*** 3376,3383 **** case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. -! echo '#line 3327 "configure"' > conftest.$ac_ext -! if { (eval echo configure:3328: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! echo '#line 3380 "configure"' > conftest.$ac_ext +! if { (eval echo configure:3381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" ---- 3329,3336 ---- +--- 3384,3391 ---- case "$lt_target" in *-*-irix6*) # Find out which ABI we are using. -! echo '#line 3333 "configure"' > conftest.$ac_ext -! if { (eval echo configure:3334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! echo '#line 3388 "configure"' > conftest.$ac_ext +! if { (eval echo configure:3389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" *************** -*** 3345,3363 **** +*** 3398,3416 **** SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -! echo "configure:3349: checking whether the C compiler needs -belf" >&5 +! echo "configure:3402: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 3354 "configure" +! #line 3407 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -! if { (eval echo configure:3361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3414: \"$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 ---- 3351,3369 ---- +--- 3406,3424 ---- SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 -! echo "configure:3355: checking whether the C compiler needs -belf" >&5 +! echo "configure:3410: checking whether the C compiler needs -belf" >&5 if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 3360 "configure" +! #line 3415 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -! if { (eval echo configure:3367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3422: \"$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 *************** -*** 3508,3516 **** +*** 3561,3569 **** # the right suffix on the files. # echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6 -! echo "configure:3512: checking for IPv6 structures" >&5 +! echo "configure:3565: checking for IPv6 structures" >&5 cat > conftest.$ac_ext <<EOF -! #line 3514 "configure" +! #line 3567 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3514,3522 ---- +--- 3569,3577 ---- # the right suffix on the files. # echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6 -! echo "configure:3518: checking for IPv6 structures" >&5 +! echo "configure:3573: checking for IPv6 structures" >&5 cat > conftest.$ac_ext <<EOF -! #line 3520 "configure" +! #line 3575 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3520,3526 **** +*** 3573,3579 **** struct sockaddr_in6 sin6; return (0); ; return 0; } EOF -! if { (eval echo configure:3524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 found_ipv6=yes ---- 3526,3532 ---- +--- 3581,3587 ---- struct sockaddr_in6 sin6; return (0); ; return 0; } EOF -! if { (eval echo configure:3530: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 found_ipv6=yes *************** -*** 3538,3544 **** +*** 3591,3597 **** # This is done before other IPv6 linking tests to LIBS is properly set. # echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6 -! echo "configure:3542: checking for Kame IPv6 support" >&5 +! echo "configure:3595: checking for Kame IPv6 support" >&5 # Check whether --with-kame or --without-kame was given. if test "${with_kame+set}" = set; then withval="$with_kame" ---- 3544,3550 ---- +--- 3599,3605 ---- # This is done before other IPv6 linking tests to LIBS is properly set. # echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6 -! echo "configure:3548: checking for Kame IPv6 support" >&5 +! echo "configure:3603: checking for Kame IPv6 support" >&5 # Check whether --with-kame or --without-kame was given. if test "${with_kame+set}" = set; then withval="$with_kame" *************** -*** 3628,3636 **** +*** 3681,3689 **** LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" echo $ac_n "checking for in6_addr""... $ac_c" 1>&6 -! echo "configure:3632: checking for in6_addr" >&5 +! echo "configure:3685: checking for in6_addr" >&5 cat > conftest.$ac_ext <<EOF -! #line 3634 "configure" +! #line 3687 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3634,3642 ---- +--- 3689,3697 ---- LWRES_PLATFORM_HAVEIPV6="#define LWRES_PLATFORM_HAVEIPV6 1" echo $ac_n "checking for in6_addr""... $ac_c" 1>&6 -! echo "configure:3638: checking for in6_addr" >&5 +! echo "configure:3693: checking for in6_addr" >&5 cat > conftest.$ac_ext <<EOF -! #line 3640 "configure" +! #line 3695 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3643,3649 **** +*** 3696,3702 **** struct in6_addr in6; return (0); ; return 0; } EOF -! if { (eval echo configure:3647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3700: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" ---- 3649,3655 ---- +--- 3704,3710 ---- struct in6_addr in6; return (0); ; return 0; } EOF -! if { (eval echo configure:3653: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3708: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_HAVEINADDR6="#undef ISC_PLATFORM_HAVEINADDR6" *************** -*** 3661,3669 **** +*** 3714,3722 **** rm -f conftest* echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6 -! echo "configure:3665: checking for in6addr_any" >&5 +! echo "configure:3718: checking for in6addr_any" >&5 cat > conftest.$ac_ext <<EOF -! #line 3667 "configure" +! #line 3720 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3667,3675 ---- +--- 3722,3730 ---- rm -f conftest* echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6 -! echo "configure:3671: checking for in6addr_any" >&5 +! echo "configure:3726: checking for in6addr_any" >&5 cat > conftest.$ac_ext <<EOF -! #line 3673 "configure" +! #line 3728 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3677,3683 **** +*** 3730,3736 **** struct in6_addr in6; in6 = in6addr_any; return (0); ; return 0; } EOF -! if { (eval echo configure:3681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" ---- 3683,3689 ---- +--- 3738,3744 ---- struct in6_addr in6; in6 = in6addr_any; return (0); ; return 0; } EOF -! if { (eval echo configure:3687: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3742: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDIN6ADDRANY="#undef ISC_PLATFORM_NEEDIN6ADDRANY" *************** -*** 3693,3701 **** +*** 3746,3754 **** rm -f conftest* echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6 -! echo "configure:3697: checking for sin6_scope_id in struct sockaddr_in6" >&5 +! echo "configure:3750: checking for sin6_scope_id in struct sockaddr_in6" >&5 cat > conftest.$ac_ext <<EOF -! #line 3699 "configure" +! #line 3752 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3699,3707 ---- +--- 3754,3762 ---- rm -f conftest* echo $ac_n "checking for sin6_scope_id in struct sockaddr_in6""... $ac_c" 1>&6 -! echo "configure:3703: checking for sin6_scope_id in struct sockaddr_in6" >&5 +! echo "configure:3758: checking for sin6_scope_id in struct sockaddr_in6" >&5 cat > conftest.$ac_ext <<EOF -! #line 3705 "configure" +! #line 3760 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3708,3714 **** +*** 3761,3767 **** struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0); ; return 0; } EOF -! if { (eval echo configure:3712: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3765: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1" ---- 3714,3720 ---- +--- 3769,3775 ---- struct sockaddr_in6 xyzzy; xyzzy.sin6_scope_id = 0; return (0); ; return 0; } EOF -! if { (eval echo configure:3718: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3773: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 result="#define LWRES_HAVE_SIN6_SCOPE_ID 1" *************** -*** 3723,3731 **** +*** 3776,3784 **** LWRES_HAVE_SIN6_SCOPE_ID="$result" echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6 -! echo "configure:3727: checking for in6_pktinfo" >&5 +! echo "configure:3780: checking for in6_pktinfo" >&5 cat > conftest.$ac_ext <<EOF -! #line 3729 "configure" +! #line 3782 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3729,3737 ---- +--- 3784,3792 ---- LWRES_HAVE_SIN6_SCOPE_ID="$result" echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6 -! echo "configure:3733: checking for in6_pktinfo" >&5 +! echo "configure:3788: checking for in6_pktinfo" >&5 cat > conftest.$ac_ext <<EOF -! #line 3735 "configure" +! #line 3790 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3738,3744 **** +*** 3791,3797 **** struct in6_pktinfo xyzzy; return (0); ; return 0; } EOF -! if { (eval echo configure:3742: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3795: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1" ---- 3744,3750 ---- +--- 3799,3805 ---- struct in6_pktinfo xyzzy; return (0); ; return 0; } EOF -! if { (eval echo configure:3748: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3803: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_HAVEIN6PKTINFO="#define ISC_PLATFORM_HAVEIN6PKTINFO 1" *************** -*** 3790,3798 **** +*** 3843,3851 **** # which provides some (all?) of the desired functions. # echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6 -! echo "configure:3794: checking for inet_ntop" >&5 +! echo "configure:3847: checking for inet_ntop" >&5 cat > conftest.$ac_ext <<EOF -! #line 3796 "configure" +! #line 3849 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3796,3804 ---- +--- 3851,3859 ---- # which provides some (all?) of the desired functions. # echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6 -! echo "configure:3800: checking for inet_ntop" >&5 +! echo "configure:3855: checking for inet_ntop" >&5 cat > conftest.$ac_ext <<EOF -! #line 3802 "configure" +! #line 3857 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3802,3808 **** +*** 3855,3861 **** inet_ntop(0, 0, 0, 0); return (0); ; return 0; } EOF -! if { (eval echo configure:3806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP" ---- 3808,3814 ---- +--- 3863,3869 ---- inet_ntop(0, 0, 0, 0); return (0); ; return 0; } EOF -! if { (eval echo configure:3812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDNTOP="#undef ISC_PLATFORM_NEEDNTOP" *************** -*** 3817,3825 **** +*** 3870,3878 **** fi rm -f conftest* echo $ac_n "checking for inet_pton""... $ac_c" 1>&6 -! echo "configure:3821: checking for inet_pton" >&5 +! echo "configure:3874: checking for inet_pton" >&5 cat > conftest.$ac_ext <<EOF -! #line 3823 "configure" +! #line 3876 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3823,3831 ---- +--- 3878,3886 ---- fi rm -f conftest* echo $ac_n "checking for inet_pton""... $ac_c" 1>&6 -! echo "configure:3827: checking for inet_pton" >&5 +! echo "configure:3882: checking for inet_pton" >&5 cat > conftest.$ac_ext <<EOF -! #line 3829 "configure" +! #line 3884 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3829,3835 **** +*** 3882,3888 **** inet_pton(0, 0, 0); return (0); ; return 0; } EOF -! if { (eval echo configure:3833: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON" ---- 3835,3841 ---- +--- 3890,3896 ---- inet_pton(0, 0, 0); return (0); ; return 0; } EOF -! if { (eval echo configure:3839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3894: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDPTON="#undef ISC_PLATFORM_NEEDPTON" *************** -*** 3844,3852 **** +*** 3897,3905 **** fi rm -f conftest* echo $ac_n "checking for inet_aton""... $ac_c" 1>&6 -! echo "configure:3848: checking for inet_aton" >&5 +! echo "configure:3901: checking for inet_aton" >&5 cat > conftest.$ac_ext <<EOF -! #line 3850 "configure" +! #line 3903 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3850,3858 ---- +--- 3905,3913 ---- fi rm -f conftest* echo $ac_n "checking for inet_aton""... $ac_c" 1>&6 -! echo "configure:3854: checking for inet_aton" >&5 +! echo "configure:3909: checking for inet_aton" >&5 cat > conftest.$ac_ext <<EOF -! #line 3856 "configure" +! #line 3911 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3856,3862 **** +*** 3909,3915 **** struct in_addr in; inet_aton(0, &in); return (0); ; return 0; } EOF -! if { (eval echo configure:3860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON" ---- 3862,3868 ---- +--- 3917,3923 ---- struct in_addr in; inet_aton(0, &in); return (0); ; return 0; } EOF -! if { (eval echo configure:3866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:3921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDATON="#undef ISC_PLATFORM_NEEDATON" *************** -*** 3889,3897 **** +*** 3942,3950 **** esac echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6 -! echo "configure:3893: checking for sa_len in struct sockaddr" >&5 +! echo "configure:3946: checking for sa_len in struct sockaddr" >&5 cat > conftest.$ac_ext <<EOF -! #line 3895 "configure" +! #line 3948 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3895,3903 ---- +--- 3950,3958 ---- esac echo $ac_n "checking for sa_len in struct sockaddr""... $ac_c" 1>&6 -! echo "configure:3899: checking for sa_len in struct sockaddr" >&5 +! echo "configure:3954: checking for sa_len in struct sockaddr" >&5 cat > conftest.$ac_ext <<EOF -! #line 3901 "configure" +! #line 3956 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3900,3906 **** +*** 3953,3959 **** struct sockaddr sa; sa.sa_len = 0; return (0); ; return 0; } EOF -! if { (eval echo configure:3904: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3957: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" ---- 3906,3912 ---- +--- 3961,3967 ---- struct sockaddr sa; sa.sa_len = 0; return (0); ; return 0; } EOF -! if { (eval echo configure:3910: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_HAVESALEN="#define ISC_PLATFORM_HAVESALEN 1" *************** -*** 3921,3929 **** +*** 3974,3982 **** # Look for a 4.4BSD or 4.3BSD struct msghdr # echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6 -! echo "configure:3925: checking for struct msghdr flavor" >&5 +! echo "configure:3978: checking for struct msghdr flavor" >&5 cat > conftest.$ac_ext <<EOF -! #line 3927 "configure" +! #line 3980 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3927,3935 ---- +--- 3982,3990 ---- # Look for a 4.4BSD or 4.3BSD struct msghdr # echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6 -! echo "configure:3931: checking for struct msghdr flavor" >&5 +! echo "configure:3986: checking for struct msghdr flavor" >&5 cat > conftest.$ac_ext <<EOF -! #line 3933 "configure" +! #line 3988 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3932,3938 **** +*** 3985,3991 **** struct msghdr msg; msg.msg_flags = 0; return (0); ; return 0; } EOF -! if { (eval echo configure:3936: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3989: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""4.4BSD" 1>&6 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1" ---- 3938,3944 ---- +--- 3993,3999 ---- struct msghdr msg; msg.msg_flags = 0; return (0); ; return 0; } EOF -! if { (eval echo configure:3942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:3997: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""4.4BSD" 1>&6 ISC_PLATFORM_MSGHDRFLAVOR="#define ISC_NET_BSD44MSGHDR 1" *************** -*** 3950,3958 **** +*** 4003,4011 **** # Look for in_port_t. # echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6 -! echo "configure:3954: checking for type in_port_t" >&5 +! echo "configure:4007: checking for type in_port_t" >&5 cat > conftest.$ac_ext <<EOF -! #line 3956 "configure" +! #line 4009 "configure" #include "confdefs.h" #include <sys/types.h> ---- 3956,3964 ---- +--- 4011,4019 ---- # Look for in_port_t. # echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6 -! echo "configure:3960: checking for type in_port_t" >&5 +! echo "configure:4015: checking for type in_port_t" >&5 cat > conftest.$ac_ext <<EOF -! #line 3962 "configure" +! #line 4017 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 3961,3967 **** +*** 4014,4020 **** in_port_t port = 25; return (0); ; return 0; } EOF -! if { (eval echo configure:3965: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4018: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT" ---- 3967,3973 ---- +--- 4022,4028 ---- in_port_t port = 25; return (0); ; return 0; } EOF -! if { (eval echo configure:3971: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4026: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_PLATFORM_NEEDPORTT="#undef ISC_PLATFORM_NEEDPORTT" *************** -*** 3979,3987 **** +*** 4032,4040 **** # Check for addrinfo # echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6 -! echo "configure:3983: checking for struct addrinfo" >&5 +! echo "configure:4036: checking for struct addrinfo" >&5 cat > conftest.$ac_ext <<EOF -! #line 3985 "configure" +! #line 4038 "configure" #include "confdefs.h" #include <netdb.h> ---- 3985,3993 ---- +--- 4040,4048 ---- # Check for addrinfo # echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6 -! echo "configure:3989: checking for struct addrinfo" >&5 +! echo "configure:4044: checking for struct addrinfo" >&5 cat > conftest.$ac_ext <<EOF -! #line 3991 "configure" +! #line 4046 "configure" #include "confdefs.h" #include <netdb.h> *************** -*** 3989,3995 **** +*** 4042,4048 **** struct addrinfo a; return (0); ; return 0; } EOF -! if { (eval echo configure:3993: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4046: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" ---- 3995,4001 ---- +--- 4050,4056 ---- struct addrinfo a; return (0); ; return 0; } EOF -! if { (eval echo configure:3999: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4054: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_NEEDADDRINFO="#undef ISC_LWRES_NEEDADDRINFO" *************** -*** 4008,4016 **** +*** 4061,4069 **** echo $ac_n "checking for int sethostent""... $ac_c" 1>&6 -! echo "configure:4012: checking for int sethostent" >&5 +! echo "configure:4065: checking for int sethostent" >&5 cat > conftest.$ac_ext <<EOF -! #line 4014 "configure" +! #line 4067 "configure" #include "confdefs.h" #include <netdb.h> ---- 4014,4022 ---- +--- 4069,4077 ---- echo $ac_n "checking for int sethostent""... $ac_c" 1>&6 -! echo "configure:4018: checking for int sethostent" >&5 +! echo "configure:4073: checking for int sethostent" >&5 cat > conftest.$ac_ext <<EOF -! #line 4020 "configure" +! #line 4075 "configure" #include "confdefs.h" #include <netdb.h> *************** -*** 4018,4024 **** +*** 4071,4077 **** int i = sethostent(0); return(0); ; return 0; } EOF -! if { (eval echo configure:4022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1" ---- 4024,4030 ---- +--- 4079,4085 ---- int i = sethostent(0); return(0); ; return 0; } EOF -! if { (eval echo configure:4028: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_SETHOSTENTINT="#define ISC_LWRES_SETHOSTENTINT 1" *************** -*** 4033,4041 **** +*** 4086,4094 **** echo $ac_n "checking for int endhostent""... $ac_c" 1>&6 -! echo "configure:4037: checking for int endhostent" >&5 +! echo "configure:4090: checking for int endhostent" >&5 cat > conftest.$ac_ext <<EOF -! #line 4039 "configure" +! #line 4092 "configure" #include "confdefs.h" #include <netdb.h> ---- 4039,4047 ---- +--- 4094,4102 ---- echo $ac_n "checking for int endhostent""... $ac_c" 1>&6 -! echo "configure:4043: checking for int endhostent" >&5 +! echo "configure:4098: checking for int endhostent" >&5 cat > conftest.$ac_ext <<EOF -! #line 4045 "configure" +! #line 4100 "configure" #include "confdefs.h" #include <netdb.h> *************** -*** 4043,4049 **** +*** 4096,4102 **** int i = endhostent(); return(0); ; return 0; } EOF -! if { (eval echo configure:4047: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4100: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1" ---- 4049,4055 ---- +--- 4104,4110 ---- int i = endhostent(); return(0); ; return 0; } EOF -! if { (eval echo configure:4053: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4108: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_ENDHOSTENTINT="#define ISC_LWRES_ENDHOSTENTINT 1" *************** -*** 4058,4066 **** +*** 4111,4119 **** echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6 -! echo "configure:4062: checking for getnetbyaddr(in_addr_t, ...)" >&5 +! echo "configure:4115: checking for getnetbyaddr(in_addr_t, ...)" >&5 cat > conftest.$ac_ext <<EOF -! #line 4064 "configure" +! #line 4117 "configure" #include "confdefs.h" #include <netdb.h> ---- 4064,4072 ---- +--- 4119,4127 ---- echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6 -! echo "configure:4068: checking for getnetbyaddr(in_addr_t, ...)" >&5 +! echo "configure:4123: checking for getnetbyaddr(in_addr_t, ...)" >&5 cat > conftest.$ac_ext <<EOF -! #line 4070 "configure" +! #line 4125 "configure" #include "confdefs.h" #include <netdb.h> *************** -*** 4069,4075 **** +*** 4122,4128 **** ; return 0; } EOF -! if { (eval echo configure:4073: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1" ---- 4075,4081 ---- +--- 4130,4136 ---- ; return 0; } EOF -! if { (eval echo configure:4079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4134: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_GETNETBYADDRINADDR="#define ISC_LWRES_GETNETBYADDRINADDR 1" *************** -*** 4084,4092 **** +*** 4137,4145 **** echo $ac_n "checking for int setnetent""... $ac_c" 1>&6 -! echo "configure:4088: checking for int setnetent" >&5 +! echo "configure:4141: checking for int setnetent" >&5 cat > conftest.$ac_ext <<EOF -! #line 4090 "configure" +! #line 4143 "configure" #include "confdefs.h" #include <netdb.h> ---- 4090,4098 ---- +--- 4145,4153 ---- echo $ac_n "checking for int setnetent""... $ac_c" 1>&6 -! echo "configure:4094: checking for int setnetent" >&5 +! echo "configure:4149: checking for int setnetent" >&5 cat > conftest.$ac_ext <<EOF -! #line 4096 "configure" +! #line 4151 "configure" #include "confdefs.h" #include <netdb.h> *************** -*** 4094,4100 **** +*** 4147,4153 **** int i = setnetent(0); return(0); ; return 0; } EOF -! if { (eval echo configure:4098: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1" ---- 4100,4106 ---- +--- 4155,4161 ---- int i = setnetent(0); return(0); ; return 0; } EOF -! if { (eval echo configure:4104: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4159: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_SETNETENTINT="#define ISC_LWRES_SETNETENTINT 1" *************** -*** 4109,4117 **** +*** 4162,4170 **** echo $ac_n "checking for int endnetent""... $ac_c" 1>&6 -! echo "configure:4113: checking for int endnetent" >&5 +! echo "configure:4166: checking for int endnetent" >&5 cat > conftest.$ac_ext <<EOF -! #line 4115 "configure" +! #line 4168 "configure" #include "confdefs.h" #include <netdb.h> ---- 4115,4123 ---- +--- 4170,4178 ---- echo $ac_n "checking for int endnetent""... $ac_c" 1>&6 -! echo "configure:4119: checking for int endnetent" >&5 +! echo "configure:4174: checking for int endnetent" >&5 cat > conftest.$ac_ext <<EOF -! #line 4121 "configure" +! #line 4176 "configure" #include "confdefs.h" #include <netdb.h> *************** -*** 4119,4125 **** +*** 4172,4178 **** int i = endnetent(); return(0); ; return 0; } EOF -! if { (eval echo configure:4123: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4176: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1" ---- 4125,4131 ---- +--- 4180,4186 ---- int i = endnetent(); return(0); ; return 0; } EOF -! if { (eval echo configure:4129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4184: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_ENDNETENTINT="#define ISC_LWRES_ENDNETENTINT 1" *************** -*** 4134,4142 **** +*** 4187,4195 **** echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6 -! echo "configure:4138: checking for gethostbyaddr(const void *, size_t, ...)" >&5 +! echo "configure:4191: checking for gethostbyaddr(const void *, size_t, ...)" >&5 cat > conftest.$ac_ext <<EOF -! #line 4140 "configure" +! #line 4193 "configure" #include "confdefs.h" #include <netdb.h> ---- 4140,4148 ---- +--- 4195,4203 ---- echo $ac_n "checking for gethostbyaddr(const void *, size_t, ...)""... $ac_c" 1>&6 -! echo "configure:4144: checking for gethostbyaddr(const void *, size_t, ...)" >&5 +! echo "configure:4199: checking for gethostbyaddr(const void *, size_t, ...)" >&5 cat > conftest.$ac_ext <<EOF -! #line 4146 "configure" +! #line 4201 "configure" #include "confdefs.h" #include <netdb.h> *************** -*** 4145,4151 **** +*** 4198,4204 **** return(0); ; return 0; } EOF -! if { (eval echo configure:4149: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1" ---- 4151,4157 ---- +--- 4206,4212 ---- return(0); ; return 0; } EOF -! if { (eval echo configure:4155: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_GETHOSTBYADDRVOID="#define ISC_LWRES_GETHOSTBYADDRVOID 1" *************** -*** 4160,4168 **** +*** 4213,4221 **** echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6 -! echo "configure:4164: checking for h_errno in netdb.h" >&5 +! echo "configure:4217: checking for h_errno in netdb.h" >&5 cat > conftest.$ac_ext <<EOF -! #line 4166 "configure" +! #line 4219 "configure" #include "confdefs.h" #include <netdb.h> ---- 4166,4174 ---- +--- 4221,4229 ---- echo $ac_n "checking for h_errno in netdb.h""... $ac_c" 1>&6 -! echo "configure:4170: checking for h_errno in netdb.h" >&5 +! echo "configure:4225: checking for h_errno in netdb.h" >&5 cat > conftest.$ac_ext <<EOF -! #line 4172 "configure" +! #line 4227 "configure" #include "confdefs.h" #include <netdb.h> *************** -*** 4170,4176 **** +*** 4223,4229 **** h_errno = 1; return(0); ; return 0; } EOF -! if { (eval echo configure:4174: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4227: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO" ---- 4176,4182 ---- +--- 4231,4237 ---- h_errno = 1; return(0); ; return 0; } EOF -! if { (eval echo configure:4180: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4235: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 ISC_LWRES_NEEDHERRNO="#undef ISC_LWRES_NEEDHERRNO" *************** -*** 4185,4196 **** +*** 4238,4249 **** echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&6 -! echo "configure:4189: checking for getipnodebyname" >&5 +! echo "configure:4242: checking for getipnodebyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4194 "configure" +! #line 4247 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char getipnodebyname(); below. */ ---- 4191,4202 ---- +--- 4246,4257 ---- echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&6 -! echo "configure:4195: checking for getipnodebyname" >&5 +! echo "configure:4250: checking for getipnodebyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_getipnodebyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4200 "configure" +! #line 4255 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char getipnodebyname(); below. */ *************** -*** 4213,4219 **** +*** 4266,4272 **** ; return 0; } EOF -! if { (eval echo configure:4217: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4270: \"$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 ---- 4219,4225 ---- +--- 4274,4280 ---- ; return 0; } EOF -! if { (eval echo configure:4223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getipnodebyname=yes" else *************** -*** 4234,4245 **** +*** 4287,4298 **** fi echo $ac_n "checking for getnameinfo""... $ac_c" 1>&6 -! echo "configure:4238: checking for getnameinfo" >&5 +! echo "configure:4291: checking for getnameinfo" >&5 if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4243 "configure" +! #line 4296 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char getnameinfo(); below. */ ---- 4240,4251 ---- +--- 4295,4306 ---- fi echo $ac_n "checking for getnameinfo""... $ac_c" 1>&6 -! echo "configure:4244: checking for getnameinfo" >&5 +! echo "configure:4299: checking for getnameinfo" >&5 if eval "test \"`echo '$''{'ac_cv_func_getnameinfo'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4249 "configure" +! #line 4304 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char getnameinfo(); below. */ *************** -*** 4262,4268 **** +*** 4315,4321 **** ; return 0; } EOF -! if { (eval echo configure:4266: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4319: \"$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 ---- 4268,4274 ---- +--- 4323,4329 ---- ; return 0; } EOF -! if { (eval echo configure:4272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getnameinfo=yes" else *************** -*** 4283,4294 **** +*** 4336,4347 **** fi echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6 -! echo "configure:4287: checking for getaddrinfo" >&5 +! echo "configure:4340: checking for getaddrinfo" >&5 if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4292 "configure" +! #line 4345 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char getaddrinfo(); below. */ ---- 4289,4300 ---- +--- 4344,4355 ---- fi echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6 -! echo "configure:4293: checking for getaddrinfo" >&5 +! echo "configure:4348: checking for getaddrinfo" >&5 if eval "test \"`echo '$''{'ac_cv_func_getaddrinfo'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4298 "configure" +! #line 4353 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char getaddrinfo(); below. */ *************** -*** 4311,4317 **** +*** 4364,4370 **** ; return 0; } EOF -! if { (eval echo configure:4315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4368: \"$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 ---- 4317,4323 ---- +--- 4372,4378 ---- ; return 0; } EOF -! if { (eval echo configure:4321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4376: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_getaddrinfo=yes" else *************** -*** 4336,4347 **** +*** 4389,4400 **** fi echo $ac_n "checking for gai_strerror""... $ac_c" 1>&6 -! echo "configure:4340: checking for gai_strerror" >&5 +! echo "configure:4393: checking for gai_strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4345 "configure" +! #line 4398 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gai_strerror(); below. */ ---- 4342,4353 ---- +--- 4397,4408 ---- fi echo $ac_n "checking for gai_strerror""... $ac_c" 1>&6 -! echo "configure:4346: checking for gai_strerror" >&5 +! echo "configure:4401: checking for gai_strerror" >&5 if eval "test \"`echo '$''{'ac_cv_func_gai_strerror'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4351 "configure" +! #line 4406 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gai_strerror(); below. */ *************** -*** 4364,4370 **** +*** 4417,4423 **** ; return 0; } EOF -! if { (eval echo configure:4368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4421: \"$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 ---- 4370,4376 ---- +--- 4425,4431 ---- ; return 0; } EOF -! if { (eval echo configure:4374: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gai_strerror=yes" else *************** -*** 4394,4402 **** +*** 4447,4455 **** # Look for a sysctl call to get the list of network interfaces. # echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6 -! echo "configure:4398: checking for interface list sysctl" >&5 +! echo "configure:4451: checking for interface list sysctl" >&5 cat > conftest.$ac_ext <<EOF -! #line 4400 "configure" +! #line 4453 "configure" #include "confdefs.h" #include <sys/param.h> ---- 4400,4408 ---- +--- 4455,4463 ---- # Look for a sysctl call to get the list of network interfaces. # echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6 -! echo "configure:4404: checking for interface list sysctl" >&5 +! echo "configure:4459: checking for interface list sysctl" >&5 cat > conftest.$ac_ext <<EOF -! #line 4406 "configure" +! #line 4461 "configure" #include "confdefs.h" #include <sys/param.h> *************** -*** 4426,4437 **** +*** 4479,4490 **** # Check for some other useful functions that are not ever-present. # echo $ac_n "checking for strsep""... $ac_c" 1>&6 -! echo "configure:4430: checking for strsep" >&5 +! echo "configure:4483: checking for strsep" >&5 if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4435 "configure" +! #line 4488 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char strsep(); below. */ ---- 4432,4443 ---- +--- 4487,4498 ---- # Check for some other useful functions that are not ever-present. # echo $ac_n "checking for strsep""... $ac_c" 1>&6 -! echo "configure:4436: checking for strsep" >&5 +! echo "configure:4491: checking for strsep" >&5 if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4441 "configure" +! #line 4496 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char strsep(); below. */ *************** -*** 4454,4460 **** +*** 4507,4513 **** ; return 0; } EOF -! if { (eval echo configure:4458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strsep=yes" else ---- 4460,4466 ---- +--- 4515,4521 ---- ; return 0; } EOF -! if { (eval echo configure:4464: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_strsep=yes" else *************** -*** 4475,4486 **** +*** 4528,4539 **** fi echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6 -! echo "configure:4479: checking for vsnprintf" >&5 +! echo "configure:4532: checking for vsnprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4484 "configure" +! #line 4537 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char vsnprintf(); below. */ ---- 4481,4492 ---- +--- 4536,4547 ---- fi echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6 -! echo "configure:4485: checking for vsnprintf" >&5 +! echo "configure:4540: checking for vsnprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4490 "configure" +! #line 4545 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char vsnprintf(); below. */ *************** -*** 4503,4509 **** +*** 4556,4562 **** ; return 0; } EOF -! if { (eval echo configure:4507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4560: \"$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 ---- 4509,4515 ---- +--- 4564,4570 ---- ; return 0; } EOF -! if { (eval echo configure:4513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4568: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vsnprintf=yes" else *************** -*** 4532,4548 **** +*** 4585,4601 **** echo $ac_n "checking for sizeof(long long int) == sizeof(long int)""... $ac_c" 1>&6 -! echo "configure:4536: checking for sizeof(long long int) == sizeof(long int)" >&5 +! echo "configure:4589: checking for sizeof(long long int) == sizeof(long int)" >&5 if test "$cross_compiling" = yes; then echo "$ac_t""default yes" 1>&6 ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1" else cat > conftest.$ac_ext <<EOF -! #line 4542 "configure" +! #line 4595 "configure" #include "confdefs.h" main() { exit(!(sizeof(long long int) == sizeof(long int))); } EOF -! if { (eval echo configure:4546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +! if { (eval echo configure:4599: \"$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_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1" ---- 4538,4554 ---- +--- 4593,4609 ---- echo $ac_n "checking for sizeof(long long int) == sizeof(long int)""... $ac_c" 1>&6 -! echo "configure:4542: checking for sizeof(long long int) == sizeof(long int)" >&5 +! echo "configure:4597: checking for sizeof(long long int) == sizeof(long int)" >&5 if test "$cross_compiling" = yes; then echo "$ac_t""default yes" 1>&6 ISC_PLATFORM_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1" else cat > conftest.$ac_ext <<EOF -! #line 4548 "configure" +! #line 4603 "configure" #include "confdefs.h" main() { exit(!(sizeof(long long int) == sizeof(long int))); } EOF -! if { (eval echo configure:4552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +! if { (eval echo configure:4607: \"$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_LONGLONGEQUALLONG="#define ISC_PLATFORM_LONGLONGEQUALLONG 1" *************** -*** 4562,4573 **** +*** 4615,4626 **** # Security Stuff # echo $ac_n "checking for chroot""... $ac_c" 1>&6 -! echo "configure:4566: checking for chroot" >&5 +! echo "configure:4619: checking for chroot" >&5 if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4571 "configure" +! #line 4624 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char chroot(); below. */ ---- 4568,4579 ---- +--- 4623,4634 ---- # Security Stuff # echo $ac_n "checking for chroot""... $ac_c" 1>&6 -! echo "configure:4572: checking for chroot" >&5 +! echo "configure:4627: checking for chroot" >&5 if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4577 "configure" +! #line 4632 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char chroot(); below. */ *************** -*** 4590,4596 **** +*** 4643,4649 **** ; return 0; } EOF -! if { (eval echo configure:4594: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4647: \"$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 ---- 4596,4602 ---- +--- 4651,4657 ---- ; return 0; } EOF -! if { (eval echo configure:4600: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +! if { (eval echo configure:4655: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_chroot=yes" else *************** -*** 4616,4632 **** +*** 4669,4685 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -! echo "configure:4620: checking for $ac_hdr" >&5 +! echo "configure:4673: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4625 "configure" +! #line 4678 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -! { (eval echo configure:4630: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +! { (eval echo configure:4683: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* ---- 4622,4638 ---- +--- 4677,4693 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -! echo "configure:4626: checking for $ac_hdr" >&5 +! echo "configure:4681: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4631 "configure" +! #line 4686 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -! { (eval echo configure:4636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +! { (eval echo configure:4691: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** -*** 4656,4672 **** +*** 4709,4725 **** do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -! echo "configure:4660: checking for $ac_hdr" >&5 +! echo "configure:4713: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4665 "configure" +! #line 4718 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -! { (eval echo configure:4670: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +! { (eval echo configure:4723: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* ---- 4662,4678 ---- +--- 4717,4733 ---- do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -! echo "configure:4666: checking for $ac_hdr" >&5 +! echo "configure:4721: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -! #line 4671 "configure" +! #line 4726 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -! { (eval echo configure:4676: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +! { (eval echo configure:4731: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* *************** -*** 4697,4705 **** +*** 4750,4758 **** # BSD/OS, and perhaps some others, don't define rlim_t. # echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 -! echo "configure:4701: checking for type rlim_t" >&5 +! echo "configure:4754: checking for type rlim_t" >&5 cat > conftest.$ac_ext <<EOF -! #line 4703 "configure" +! #line 4756 "configure" #include "confdefs.h" #include <sys/types.h> ---- 4703,4711 ---- +--- 4758,4766 ---- # BSD/OS, and perhaps some others, don't define rlim_t. # echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 -! echo "configure:4707: checking for type rlim_t" >&5 +! echo "configure:4762: checking for type rlim_t" >&5 cat > conftest.$ac_ext <<EOF -! #line 4709 "configure" +! #line 4764 "configure" #include "confdefs.h" #include <sys/types.h> *************** -*** 4709,4715 **** +*** 4762,4768 **** rlim_t rl = 19671212; return (0); ; return 0; } EOF -! if { (eval echo configure:4713: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4766: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF ---- 4715,4721 ---- +--- 4770,4776 ---- rlim_t rl = 19671212; return (0); ; return 0; } EOF -! if { (eval echo configure:4719: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +! if { (eval echo configure:4774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 cat >> confdefs.h <<\EOF *************** -*** 4802,4808 **** +*** 4777,4788 **** + fi + rm -f conftest* + echo $ac_n "checking sizeof rlim_cur""... $ac_c" 1>&6 +! echo "configure:4781: checking sizeof rlim_cur" >&5 + if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 4786 "configure" + #include "confdefs.h" + + #include <sys/types.h> +--- 4785,4796 ---- + fi + rm -f conftest* + echo $ac_n "checking sizeof rlim_cur""... $ac_c" 1>&6 +! echo "configure:4789: checking sizeof rlim_cur" >&5 + if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 4794 "configure" + #include "confdefs.h" + + #include <sys/types.h> +*************** +*** 4790,4796 **** + #include <sys/resource.h> + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));} + EOF +! if { (eval echo configure:4794: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int" +--- 4798,4804 ---- + #include <sys/resource.h> + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));} + EOF +! if { (eval echo configure:4802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int" +*************** +*** 4803,4809 **** + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 4807 "configure" + #include "confdefs.h" + + #include <sys/types.h> +--- 4811,4817 ---- + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 4815 "configure" + #include "confdefs.h" + + #include <sys/types.h> +*************** +*** 4811,4817 **** + #include <sys/resource.h> + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));} + EOF +! if { (eval echo configure:4815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int" +--- 4819,4825 ---- + #include <sys/resource.h> + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));} + EOF +! if { (eval echo configure:4823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int" +*************** +*** 4824,4830 **** + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 4828 "configure" + #include "confdefs.h" + + #include <sys/types.h> +--- 4832,4838 ---- + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 4836 "configure" + #include "confdefs.h" + + #include <sys/types.h> +*************** +*** 4832,4838 **** + #include <sys/resource.h> + main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));} + EOF +! if { (eval echo configure:4836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" +--- 4840,4846 ---- + #include <sys/resource.h> + main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));} + EOF +! if { (eval echo configure:4844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" +*************** +*** 4935,4941 **** # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:4806: checking for $ac_word" >&5 +! echo "configure:4939: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_JADE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ---- 4808,4814 ---- +--- 4943,4949 ---- # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -! echo "configure:4812: checking for $ac_word" >&5 +! echo "configure:4947: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_JADE'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else *************** -*** 4848,4854 **** +*** 4981,4987 **** SGMLDIR="" echo $ac_n "checking for SGML files""... $ac_c" 1>&6 -! echo "configure:4852: checking for SGML files" >&5 +! echo "configure:4985: checking for SGML files" >&5 for d in /usr/pkg/share/sgml /usr/local/share/sgml do if test -f $d/docbook/dsssl/modular/html/docbook.dsl ---- 4854,4860 ---- +--- 4989,4995 ---- SGMLDIR="" echo $ac_n "checking for SGML files""... $ac_c" 1>&6 -! echo "configure:4858: checking for SGML files" >&5 +! echo "configure:4993: checking for SGML files" >&5 for d in /usr/pkg/share/sgml /usr/local/share/sgml do if test -f $d/docbook/dsssl/modular/html/docbook.dsl *************** -*** 4874,4880 **** +*** 5007,5013 **** XGMLDIR="" echo $ac_n "checking for XML files""... $ac_c" 1>&6 -! echo "configure:4878: checking for XML files" >&5 +! echo "configure:5011: checking for XML files" >&5 for d in /usr/pkg/share/xml /usr/local/share/xml do if test -f $d/dtd/docbook/docbookx.dtd ---- 4880,4886 ---- +--- 5015,5021 ---- XGMLDIR="" echo $ac_n "checking for XML files""... $ac_c" 1>&6 -! echo "configure:4884: checking for XML files" >&5 +! echo "configure:5019: checking for XML files" >&5 for d in /usr/pkg/share/xml /usr/local/share/xml do if test -f $d/dtd/docbook/docbookx.dtd *************** -*** 4891,4896 **** ---- 4897,5061 ---- +*** 5024,5029 **** +--- 5032,5224 ---- XMLDIR=/usr/local/share/xml fi @@ -3310,7 +3527,11 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 + + case "$use_mdn" in + yes) -+ mdn_path=/usr/local ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi + ;; + no) + ;; @@ -3319,21 +3540,45 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 + ;; + 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" -+ else -+ iconvlib="no" + fi + + case "$iconvlib" in + no) -+ iconvlib= -+ ;; ++ iconvlib= ++ ;; + yes) -+ iconvlib=-liconv -+ ;; ++ iconvlib=-liconv ++ ;; + esac + + # Check whether --with-mdnlib or --without-mdnlib was given. @@ -3364,17 +3609,17 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -+ echo "configure:4970: checking for $ac_hdr" >&5 ++ echo "configure:5133: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF -+ #line 4975 "configure" ++ #line 5138 "configure" + #include "confdefs.h" + #include <$ac_hdr> + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+ { (eval echo configure:4980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ { (eval echo configure:5143: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* @@ -3403,12 +3648,12 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 + for ac_func in setlocale + do + echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+ echo "configure:5009: checking for $ac_func" >&5 ++ echo "configure:5172: checking for $ac_func" >&5 + if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF -+ #line 5014 "configure" ++ #line 5177 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ @@ -3431,7 +3676,7 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 + + ; return 0; } + EOF -+ if { (eval echo configure:5037: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ if { (eval echo configure:5200: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" + else @@ -3458,23 +3703,27 @@ diff -c mdn/othersrc/bind9/configure:1.1.1.6 mdn/othersrc/bind9/configure:1.8 # Index: configure.in -diff -c mdn/othersrc/bind9/configure.in:1.1.1.6 mdn/othersrc/bind9/configure.in:1.8 -*** configure.in Tue Apr 17 14:17:03 2001 ---- configure.in Tue Apr 17 17:31:13 2001 +diff -c mdn/othersrc/bind9/configure.in:1.1.1.7 mdn/othersrc/bind9/configure.in:1.10 +*** configure.in Thu Jul 26 15:43:20 2001 +--- configure.in Thu Jul 26 16:44:20 2001 *************** -*** 1239,1244 **** ---- 1239,1292 ---- +*** 1305,1310 **** +--- 1305,1383 ---- AC_SUBST(XMLDIR) # + # MDN support + # + AC_ARG_WITH(mdn, -+ [ --with-mdn[=PREFIX] enable MDN support using mDNkit [default prefix /usr/local]], ++ [ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]], + use_mdn="$withval", use_mdn="no") + case "$use_mdn" in + yes) -+ mdn_path=/usr/local ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi + ;; + no) + ;; @@ -3483,16 +3732,37 @@ diff -c mdn/othersrc/bind9/configure.in:1.1.1.6 mdn/othersrc/bind9/configure.in: + ;; + 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", iconvlib="no") ++ iconvlib="$withval") + case "$iconvlib" in + no) -+ iconvlib= -+ ;; ++ iconvlib= ++ ;; + yes) -+ iconvlib=-liconv -+ ;; ++ iconvlib=-liconv ++ ;; + esac + + AC_ARG_WITH(mdnlib, @@ -3518,10 +3788,28 @@ diff -c mdn/othersrc/bind9/configure.in:1.1.1.6 mdn/othersrc/bind9/configure.in: # Substitutions # AC_SUBST(BIND9_TOP_BUILDDIR) +Index: bin/dig/dig.c +diff -c mdn/othersrc/bind9/bin/dig/dig.c:1.1.1.7 mdn/othersrc/bind9/bin/dig/dig.c:1.6 +*** bin/dig/dig.c Tue Apr 17 14:17:04 2001 +--- bin/dig/dig.c Wed Aug 15 11:26:01 2001 +*************** +*** 1284,1289 **** +--- 1284,1294 ---- + printgreeting(argc, argv, lookup); + ISC_LIST_APPEND(lookup_list, lookup, link); + } ++ ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + } + + /* Index: bin/dig/dighost.c -diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.9 mdn/othersrc/bind9/bin/dig/dighost.c:1.20 -*** bin/dig/dighost.c Mon May 21 15:49:55 2001 ---- bin/dig/dighost.c Mon May 21 15:57:32 2001 +diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.10 mdn/othersrc/bind9/bin/dig/dighost.c:1.23 +*** bin/dig/dighost.c Thu Jul 26 15:43:22 2001 +--- bin/dig/dighost.c Wed Aug 15 11:26:01 2001 *************** *** 33,38 **** --- 33,49 ---- @@ -3566,8 +3854,32 @@ diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.9 mdn/othersrc/bind9/bin/dig/ * Apply and clear locks at the event level in global task. * Can I get rid of these using shutdown events? XXX *************** -*** 694,699 **** ---- 719,728 ---- +*** 371,376 **** +--- 396,404 ---- + looknew->ignore = ISC_FALSE; + looknew->servfail_stops = ISC_FALSE; + looknew->besteffort = ISC_TRUE; ++ #ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++ #endif + looknew->dnssec = ISC_FALSE; + looknew->udpsize = 0; + looknew->recurse = ISC_TRUE; +*************** +*** 429,434 **** +--- 457,465 ---- + looknew->ignore = lookold->ignore; + looknew->servfail_stops = lookold->servfail_stops; + looknew->besteffort = lookold->besteffort; ++ #ifdef WITH_MDN ++ looknew->mdn = lookold->mdn; ++ #endif + looknew->dnssec = lookold->dnssec; + looknew->udpsize = lookold->udpsize; + looknew->recurse = lookold->recurse; +*************** +*** 697,702 **** +--- 728,737 ---- ISC_LIST_APPEND(server_list, srv, link); } @@ -3579,8 +3891,8 @@ diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.9 mdn/othersrc/bind9/bin/dig/ setup_file_key(); else if (keysecret[0] != 0) *************** -*** 1229,1234 **** ---- 1258,1267 ---- +*** 1232,1243 **** +--- 1267,1289 ---- isc_region_t r; isc_buffer_t b; char store[MXNAME]; @@ -3591,96 +3903,207 @@ diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.9 mdn/othersrc/bind9/bin/dig/ REQUIRE(lookup != NULL); INSIST(!free_now); + + debug("setup_lookup(%p)", lookup); + ++ #ifdef WITH_MDN ++ if (lookup->mdn == ISC_TRUE) ++ dns_name_settotextfilter(output_filter); ++ else ++ dns_name_settotextfilter(NULL); ++ #endif ++ + result = dns_message_create(mctx, DNS_MESSAGE_INTENTRENDER, + &lookup->sendmsg); + check_result(result, "dns_message_create"); *************** -*** 1288,1293 **** ---- 1321,1367 ---- +*** 1291,1344 **** } if (lookup->origin != NULL) { debug("trying origin %s", lookup->origin->origin); -+ #ifdef WITH_MDN -+ /* -+ * We cannot convert name and origin separately and combine -+ * them later, because some encoding scheme (such as UTF-5) -+ * can be applied only to an entire domain name, not a -+ * partial one. -+ */ -+ mr = mdn_res_nameconv(mdnconf, "l", lookup->textname, -+ idn_textname, sizeof(idn_textname)); -+ mdn_check_result(mr, "convert textname to UCS"); -+ mr = mdn_res_nameconv(mdnconf, "l", lookup->origin->origin, -+ idn_origin, sizeof(idn_origin)); -+ mdn_check_result(mr, "convert origin to UCS"); -+ mr = append_textname(idn_textname, idn_origin, -+ sizeof(idn_textname)); -+ mdn_check_result(mr, "append UCS origin to UCS textname"); -+ mr = mdn_res_nameconv(mdnconf, "dMNI", idn_textname, -+ idn_tmp, sizeof(idn_tmp)); -+ mdn_check_result(mr, "convert UCS textname to IDN encoding"); -+ strcpy(idn_textname, idn_tmp); -+ -+ if (!lookup->trace_root) { -+ len = strlen(idn_textname); -+ isc_buffer_init(&b, idn_textname, len); -+ isc_buffer_add(&b, len); -+ result = dns_name_fromtext(lookup->name, &b, -+ dns_rootname, -+ ISC_FALSE, -+ &lookup->namebuf); -+ } else { -+ dns_name_clone(dns_rootname, lookup->name); -+ } -+ if (result != ISC_R_SUCCESS) { -+ dns_message_puttempname(lookup->sendmsg, -+ &lookup->name); -+ isc_buffer_init(&b, store, MXNAME); -+ fatal("'%s' is not a legal name syntax " -+ "(%s)", lookup->textname, -+ dns_result_totext(result)); -+ } -+ #else /* WITH_MDN */ - result = dns_message_gettempname(lookup->sendmsg, - &lookup->oname); - check_result(result, "dns_message_gettempname"); -*************** -*** 1326,1334 **** ---- 1400,1423 ---- - lookup->textname, dns_result_totext(result)); +! result = dns_message_gettempname(lookup->sendmsg, +! &lookup->oname); +! check_result(result, "dns_message_gettempname"); +! dns_name_init(lookup->oname, NULL); +! /* XXX Helper funct to conv char* to name? */ +! len = strlen(lookup->origin->origin); +! isc_buffer_init(&b, lookup->origin->origin, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->oname, &b, dns_rootname, +! ISC_FALSE, &lookup->onamebuf); +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); +! dns_message_puttempname(lookup->sendmsg, +! &lookup->oname); +! fatal("'%s' is not in legal name syntax (%s)", +! lookup->origin->origin, +! dns_result_totext(result)); +! } +! if (lookup->trace_root) { +! dns_name_clone(dns_rootname, lookup->name); + } else { +! len = strlen(lookup->textname); +! isc_buffer_init(&b, lookup->textname, len); + isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! lookup->oname, ISC_FALSE, +! &lookup->namebuf); +! } +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); + dns_message_puttempname(lookup->sendmsg, + &lookup->oname); +- fatal("'%s' is not in legal name syntax (%s)", +- lookup->textname, dns_result_totext(result)); } - dns_message_puttempname(lookup->sendmsg, &lookup->oname); -+ #endif /* WITH_MDN */ +- dns_message_puttempname(lookup->sendmsg, &lookup->oname); } else { debug("using root origin"); if (!lookup->trace_root) { -+ #ifdef WITH_MDN -+ mr = mdn_res_nameconv(mdnconf, "ldMNI", -+ lookup->textname, idn_textname, -+ sizeof(idn_textname)); -+ mdn_check_result(mr, -+ "convert textname to IDN encoding"); -+ len = strlen(idn_textname); -+ isc_buffer_init(&b, idn_textname, len); -+ isc_buffer_add(&b, len); -+ result = dns_name_fromtext(lookup->name, &b, -+ dns_rootname, -+ ISC_FALSE, -+ &lookup->namebuf); -+ #else /* WITH_MDN */ - len = strlen(lookup->textname); - isc_buffer_init(&b, lookup->textname, len); +! len = strlen(lookup->textname); +! isc_buffer_init(&b, lookup->textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! dns_rootname, +! ISC_FALSE, +! &lookup->namebuf); + } else { + dns_name_clone(dns_rootname, lookup->name); + } +--- 1337,1464 ---- + } + if (lookup->origin != NULL) { + debug("trying origin %s", lookup->origin->origin); +! #ifdef WITH_MDN +! if (lookup->mdn) { +! /* +! * We cannot convert name and origin separately and +! * combine them later, because some encoding scheme +! * (such as UTF-5) can be applied only to an entire +! * domain name, not a partial one. +! */ +! mr = mdn_res_nameconv(mdnconf, "l", lookup->textname, +! idn_textname, +! sizeof(idn_textname)); +! mdn_check_result(mr, "convert textname to UCS"); +! mr = mdn_res_nameconv(mdnconf, "l", +! lookup->origin->origin, +! idn_origin, sizeof(idn_origin)); +! mdn_check_result(mr, "convert origin to UCS"); +! mr = append_textname(idn_textname, idn_origin, +! sizeof(idn_textname)); +! mdn_check_result(mr, "append UCS origin to UCS " +! "textname"); +! mr = mdn_res_nameconv(mdnconf, "dMNI", idn_textname, +! idn_tmp, sizeof(idn_tmp)); +! mdn_check_result(mr, "convert UCS textname to IDN " +! "encoding"); +! strcpy(idn_textname, idn_tmp); +! +! if (!lookup->trace_root) { +! len = strlen(idn_textname); +! isc_buffer_init(&b, idn_textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! dns_rootname, +! ISC_FALSE, +! &lookup->namebuf); +! } else { +! dns_name_clone(dns_rootname, lookup->name); +! } +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); +! isc_buffer_init(&b, store, MXNAME); +! fatal("'%s' is not a legal name syntax " +! "(%s)", lookup->textname, +! dns_result_totext(result)); +! } +! #else /* WITH_MDN */ +! if (0) { +! #endif /* WITH_MDN */ + } else { +! result = dns_message_gettempname(lookup->sendmsg, +! &lookup->oname); +! check_result(result, "dns_message_gettempname"); +! dns_name_init(lookup->oname, NULL); +! /* XXX Helper funct to conv char* to name? */ +! len = strlen(lookup->origin->origin); +! isc_buffer_init(&b, lookup->origin->origin, len); isc_buffer_add(&b, len); -*************** -*** 1336,1341 **** ---- 1425,1431 ---- - dns_rootname, - ISC_FALSE, - &lookup->namebuf); -+ #endif /* WITH_MDN */ +! result = dns_name_fromtext(lookup->oname, &b, +! dns_rootname, ISC_FALSE, +! &lookup->onamebuf); +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); +! dns_message_puttempname(lookup->sendmsg, +! &lookup->oname); +! fatal("'%s' is not in legal name syntax (%s)", +! lookup->origin->origin, +! dns_result_totext(result)); +! } +! if (lookup->trace_root) { +! dns_name_clone(dns_rootname, lookup->name); +! } else { +! len = strlen(lookup->textname); +! isc_buffer_init(&b, lookup->textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! lookup->oname, +! ISC_FALSE, +! &lookup->namebuf); +! } +! if (result != ISC_R_SUCCESS) { +! dns_message_puttempname(lookup->sendmsg, +! &lookup->name); +! dns_message_puttempname(lookup->sendmsg, +! &lookup->oname); +! fatal("'%s' is not in legal name syntax (%s)", +! lookup->textname, +! dns_result_totext(result)); +! } + dns_message_puttempname(lookup->sendmsg, + &lookup->oname); + } + } else { + debug("using root origin"); + if (!lookup->trace_root) { +! #ifdef WITH_MDN +! if (lookup->mdn) { +! mr = mdn_res_nameconv(mdnconf, "ldMNI", +! lookup->textname, +! idn_textname, +! sizeof(idn_textname)); +! mdn_check_result(mr, "convert textname to " +! "IDN encoding"); +! len = strlen(idn_textname); +! isc_buffer_init(&b, idn_textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! dns_rootname, +! ISC_FALSE, +! &lookup->namebuf); +! #else /* WITH_MDN */ +! if (0) { +! #endif /* WITH_MDN */ +! } else { +! len = strlen(lookup->textname); +! isc_buffer_init(&b, lookup->textname, len); +! isc_buffer_add(&b, len); +! result = dns_name_fromtext(lookup->name, &b, +! dns_rootname, +! ISC_FALSE, +! &lookup->namebuf); +! } } else { dns_name_clone(dns_rootname, lookup->name); } *************** -*** 2756,2758 **** ---- 2846,2962 ---- +*** 2763,2765 **** +--- 2883,2998 ---- if (mctx != NULL) isc_mem_destroy(&mctx); } @@ -3689,7 +4112,6 @@ diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.9 mdn/othersrc/bind9/bin/dig/ + static void + initialize_mdn(void) { + mdn_result_t r; -+ mdn_converter_t conv; + + #ifdef HAVE_SETLOCALE + /* Set locale */ @@ -3747,7 +4169,7 @@ diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.9 mdn/othersrc/bind9/bin/dig/ + /* + * Convert contents of 'tmp1' to local encoding. + */ -+ if (mdn_res_nameconv(mdnconf, "iL", tmp1, tmp2, MAXDLEN) ++ if (mdn_res_nameconv(mdnconf, "i!NL", tmp1, tmp2, MAXDLEN) + != mdn_success) + return (ISC_R_SUCCESS); + strcpy(tmp1, tmp2); @@ -3798,10 +4220,131 @@ diff -c mdn/othersrc/bind9/bin/dig/dighost.c:1.1.1.9 mdn/othersrc/bind9/bin/dig/ + } + + #endif /* WITH_MDN */ +Index: bin/dig/host.c +diff -c mdn/othersrc/bind9/bin/dig/host.c:1.1.1.7 mdn/othersrc/bind9/bin/dig/host.c:1.6 +*** bin/dig/host.c Tue Apr 17 14:17:05 2001 +--- bin/dig/host.c Wed Aug 15 11:26:01 2001 +*************** +*** 669,674 **** +--- 669,679 ---- + lookup->new_search = ISC_TRUE; + ISC_LIST_APPEND(lookup_list, lookup, link); + ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif ++ + usesearch = ISC_TRUE; + } + +Index: bin/dig/nslookup.c +diff -c mdn/othersrc/bind9/bin/dig/nslookup.c:1.1.1.7 mdn/othersrc/bind9/bin/dig/nslookup.c:1.6 +*** bin/dig/nslookup.c Tue Apr 17 14:17:05 2001 +--- bin/dig/nslookup.c Wed Aug 15 11:26:01 2001 +*************** +*** 766,771 **** +--- 766,775 ---- + ISC_LIST_APPEND(lookup_list, lookup, link); + lookup->origin = NULL; + ISC_LIST_INIT(lookup->my_server_list); ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + debug("looking up %s", lookup->textname); + } + +Index: bin/dig/include/dig/dig.h +diff -c mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.1.1.5 mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.6 +*** bin/dig/include/dig/dig.h Fri Jan 19 11:58:37 2001 +--- bin/dig/include/dig/dig.h Wed Aug 15 11:26:01 2001 +*************** +*** 69,74 **** +--- 69,81 ---- + * be 1. + */ + ++ /* ++ * Name of environment variable which disables MDN support if defined. ++ */ ++ #ifdef WITH_MDN ++ #define MDN_DISABLE_ENVVAR_NAME "MDN_DISABLE" ++ #endif ++ + ISC_LANG_BEGINDECLS + + typedef struct dig_lookup dig_lookup_t; +*************** +*** 103,108 **** +--- 110,118 ---- + servfail_stops, + new_search, + besteffort, ++ #ifdef WITH_MDN ++ mdn, ++ #endif + dnssec; + char textname[MXNAME]; /* Name we're going to be looking up */ + char cmdline[MXNAME]; +Index: doc/man/bin/dig.1 +diff -c mdn/othersrc/bind9/doc/man/bin/dig.1:1.1.1.4 mdn/othersrc/bind9/doc/man/bin/dig.1:1.2 +*** doc/man/bin/dig.1 Thu Jul 26 15:44:12 2001 +--- doc/man/bin/dig.1 Wed Aug 22 13:20:44 2001 +*************** +*** 450,455 **** +--- 450,469 ---- + will not print the initial query when it looks up the + NS records for + .Dv isc.org . ++ .Sh MDN SUPPORT ++ If ++ .Nm dig ++ has been built with mdn support, it can accept and display non-ASCII ++ domain names. ++ .Nm dig ++ appropriately converts character encoding of domain name before sending ++ a request to DNS server or displaying a reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines the ++ .Ar MDN_DISABLE ++ environment variable. ++ The MDN support is disabled if the the variable is set when ++ .Nm dig ++ runs. + .Sh FILES + .Pa /etc/resolv.conf + .Sh SEE ALSO +Index: doc/man/bin/host.1 +diff -c mdn/othersrc/bind9/doc/man/bin/host.1:1.1.1.4 mdn/othersrc/bind9/doc/man/bin/host.1:1.2 +*** doc/man/bin/host.1 Thu Jul 26 15:44:12 2001 +--- doc/man/bin/host.1 Wed Aug 22 13:20:44 2001 +*************** +*** 206,211 **** +--- 206,225 ---- + will effectively wait forever for a reply. + The time to wait for a response will be set to the number of seconds + given by the hardware's maximum value for an integer quantity. ++ .Sh MDN SUPPORT ++ If ++ .Nm host ++ has been built with mdn support, it can accept and display non-ASCII ++ domain names. ++ .Nm host ++ appropriately converts character encoding of domain name before sending ++ a request to DNS server or displaying a reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines the ++ .Ar MDN_DISABLE ++ environment variable. ++ The MDN support is disabled if the the variable is set when ++ .Nm host ++ runs. + .Sh FILES + .Pa /etc/resolv.conf + .Sh SEE ALSO Index: lib/dns/name.c -diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.7 mdn/othersrc/bind9/lib/dns/name.c:1.10 -*** lib/dns/name.c Mon May 21 15:50:37 2001 ---- lib/dns/name.c Mon May 21 15:57:49 2001 +diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.8 mdn/othersrc/bind9/lib/dns/name.c:1.11 +*** lib/dns/name.c Thu Jul 26 15:44:38 2001 +--- lib/dns/name.c Thu Jul 26 16:44:21 2001 *************** *** 205,210 **** --- 205,217 ---- @@ -3831,8 +4374,8 @@ diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.7 mdn/othersrc/bind9/lib/dns/nam /* * This function assumes the name is in proper uncompressed *************** -*** 1883,1888 **** ---- 1893,1902 ---- +*** 1882,1887 **** +--- 1892,1901 ---- isc_buffer_add(target, tlen - trem); @@ -3844,8 +4387,8 @@ diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.7 mdn/othersrc/bind9/lib/dns/nam } *************** -*** 3154,3156 **** ---- 3168,3177 ---- +*** 3153,3155 **** +--- 3167,3176 ---- } else snprintf(cp, size, "<unknown>"); } diff --git a/contrib/idn/mdnkit/patch/bind9/bind-9.2.0-patch b/contrib/idn/mdnkit/patch/bind9/bind-9.2.0-patch new file mode 100644 index 00000000..b04138b1 --- /dev/null +++ b/contrib/idn/mdnkit/patch/bind9/bind-9.2.0-patch @@ -0,0 +1,6047 @@ +MDN patch for bind-9.2.0 +======================== + + +This is a patch file for ISC BIND 9.2.0 to make it work with +internationalized/multilingual domain names. With this patch you'll +get MDN-aware dig/host/nslookup. + +To apply this patch, you should go to the top directory of the BIND +distribution (where you see `README' file), then invoke `patch' +command like this: + + % patch -p0 < this-file + +Then follow the instructions described in `README.mdnkit' to compile +and install. + + +Index: README.mdnkit +diff -c /dev/null mdn/othersrc/bind9/README.mdnkit:1.9 +*** README.mdnkit Thu Dec 6 13:51:44 2001 +--- README.mdnkit Wed Aug 22 15:19:31 2001 +*************** +*** 0 **** +--- 1,124 ---- ++ ++ BIND-9 MDN patch ++ ++ Japan Network Information Center (JPNIC) ++ ++ ++ * What is this patch for? ++ ++ This patch adds multilingual domain name (MDN) support to BIND-9. ++ You'll get multilingualized version of dig/host/nslookup commands. ++ ++ + mulltilingualized dig/host/nslookup ++ dig/host/nslookup accepts non-ASCII domain names in the local ++ codeset (such as Shift JIS, Big5 or ISO8859-1) determined by ++ the locale information. The domain names are normalized and ++ converted to the encoding on the DNS protocol, and sent to DNS ++ servers. The replies are converted back to the local codeset ++ and displayed. ++ ++ ++ * Compilation & installation ++ ++ 0. Prerequisite ++ ++ You have to build and install mDNkit before building this patched version ++ of bind-9. ++ ++ 1. Running configure script ++ ++ Run `configure' in the top directory. See `README' for the ++ configuration options. ++ ++ This patch adds the following 4 options to `configure'. You should ++ at least specify `--with-mdn' option to enable MDN support. ++ ++ --with-mdn[=MDN_PREFIX] ++ To enable MDN support, you have to specify `--with-mdn' option. ++ The argument MDN_PREFIX is the install prefix of mDNkit. If ++ MDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX') ++ is assumed. ++ ++ --with-libiconv[=LIBICONV_PREFIX] ++ Specify this option if mDNkit you have installed links GNU ++ libiconv. The argument LIBICONV_PREFIX is install prefix of ++ GNU libiconv. If the argument is omitted, PREFIX (derived ++ from `--prefix=PREFIX') is assumed. ++ ++ `--with-libiconv' is shorthand option for GNU libiconv. ++ ++ --with-libiconv=/usr/local ++ ++ This is equivalent to: ++ ++ --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' ++ ++ `--with-libiconv' assumes that your C compiler has `-R' ++ option, and that the option adds the specified run-time path ++ to an exacutable binary. If `-R' option of your compiler has ++ different meaning, or your compiler lacks the option, you ++ should use `--with-iconv' option instead. Binary command ++ without run-time path information might be unexecutable. ++ In that case, you would see an error message like: ++ ++ error in loading shared libraries: libiconv.so.2: cannot ++ open shared object file ++ ++ If both `--with-libiconv' and `--with-iconv' options are ++ specified, `--with-iconv' is prior to `--with-libiconv'. ++ ++ --with-iconv=ICONV_LIBSPEC ++ If your libc doens't provide iconv(), you need to specify the ++ library containing iconv() with this option. `ICONV_LIBSPEC' ++ is the argument(s) to `cc' or `ld' to link the library, for ++ example, `--with-iconv="-L/usr/local/lib -liconv"'. ++ You don't need to specify the header file directory for "iconv.h" ++ to the compiler, as it isn't included directly by bind-9 with ++ this patch. ++ ++ --with-mdnlib=MDN_LIBSPEC ++ With this option, you can explicitly specify the argument(s) ++ to `cc' or `ld' to link the mDNkit's library, `libmdn'. If ++ this option is not specified, `-L${PREFIX}/lib -lmdn' is ++ assumed, where ${PREFIX} is the installation prefix specified ++ with `--with-mdn' option above. You may need to use this ++ option to specify extra argments, for example, ++ `--with-mdnlib="-L/usr/local/lib -R/usr/local/lib -lmdn"'. ++ ++ Please consult `README' for other configuration options. ++ ++ Note that if you want to specify some extra header file directories, ++ you should use the environment variable STD_CINCLUDES instead of ++ CFLAGS, as described in README. ++ ++ 2. Compilation and installation ++ ++ After running "configure", just do ++ ++ make ++ make install ++ ++ for compiling and installing. ++ ++ 3. Resolver configuration ++ ++ To handle multilingual domain names, you have to specify the ++ properties like: ++ + name encoding used in DNS protocol data ++ + normalization (NAMEPREP) schemes ++ These properties are specified by the mDNkit's configuration file, ++ "mdn.conf". You have to create and set up the file properly. The ++ pathname of the file and contents are described in the manual ++ "mdn.conf". ++ ++ ++ * Contact information ++ ++ Please see http//www.nic.ad.jp/jp/research/idn/ for the latest news ++ about mDNkit and this patch. ++ ++ Bug reports and comments on this kit should be sent to ++ mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively. ++ ++ ++ ; $Id: bind-9.2.0-patch,v 1.1.2.1 2002/02/08 12:15:13 marka Exp $ +Index: config.h.in +diff -c mdn/othersrc/bind9/config.h.in:1.1.1.6 mdn/othersrc/bind9/config.h.in:1.10.2.1 +*** config.h.in Tue Nov 27 16:55:45 2001 +--- config.h.in Thu Dec 6 13:51:12 2001 +*************** +*** 141,146 **** +--- 141,149 ---- + /* define if you have strerror in the C library. */ + #undef HAVE_STRERROR + ++ /* Define if you have the setlocale function. */ ++ #undef HAVE_SETLOCALE ++ + /* Define if you have the <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 mDNkit support is to be included. */ ++ #undef WITH_MDN ++ +Index: configure +diff -c mdn/othersrc/bind9/configure:1.1.1.8 mdn/othersrc/bind9/configure:1.11 +*** configure Tue Nov 27 16:55:47 2001 +--- configure Thu Nov 29 18:45:13 2001 +*************** +*** 369,374 **** +--- 369,382 ---- + --with-kame[=PATH] use Kame IPv6 [default path /usr/local/v6]" + ac_help="$ac_help + --disable-linux-caps disable linux capabilities" ++ ac_help="$ac_help ++ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]" ++ ac_help="$ac_help ++ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]" ++ ac_help="$ac_help ++ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]" ++ ac_help="$ac_help ++ --with-mdnlib=ARG specify libmdn" + + # Initialize some variables set by options. + # The variables have the same names as the options, with +*************** +*** 911,917 **** + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 +! echo "configure:915: checking host system type" >&5 + + host_alias=$host + case "$host_alias" in +--- 919,925 ---- + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 +! echo "configure:923: checking host system type" >&5 + + host_alias=$host + case "$host_alias" in +*************** +*** 933,939 **** + + + echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +! echo "configure:937: checking whether ${MAKE-make} sets \${MAKE}" >&5 + set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 941,947 ---- + + + echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +! echo "configure:945: checking whether ${MAKE-make} sets \${MAKE}" >&5 + set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` + if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 962,968 **** + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:966: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 970,976 ---- + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:974: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1001,1007 **** + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # ./install, which can be erroneously created by make from ./install.sh. + echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +! echo "configure:1005: checking for a BSD compatible install" >&5 + if test -z "$INSTALL"; then + if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +--- 1009,1015 ---- + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" + # ./install, which can be erroneously created by make from ./install.sh. + echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +! echo "configure:1013: checking for a BSD compatible install" >&5 + if test -z "$INSTALL"; then + if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +*************** +*** 1062,1068 **** + # Extract the first word of "ar", so it can be a program name with args. + set dummy ar; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1066: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1070,1076 ---- + # Extract the first word of "ar", so it can be a program name with args. + set dummy ar; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1074: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_AR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1121,1127 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1125: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1129,1135 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1133: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_ETAGS'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1163,1169 **** + # + if test "X$ETAGS" != "X"; then + echo $ac_n "checking for Exuberant Ctags etags""... $ac_c" 1>&6 +! echo "configure:1167: checking for Exuberant Ctags etags" >&5 + if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then + echo "$ac_t""yes" 1>&6 + ETAGS="$ETAGS -L" +--- 1171,1177 ---- + # + if test "X$ETAGS" != "X"; then + echo $ac_n "checking for Exuberant Ctags etags""... $ac_c" 1>&6 +! echo "configure:1175: checking for Exuberant Ctags etags" >&5 + if $ETAGS --version 2>&1 | grep 'Exuberant Ctags' >/dev/null 2>&1; then + echo "$ac_t""yes" 1>&6 + ETAGS="$ETAGS -L" +*************** +*** 1181,1187 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1185: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1189,1195 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1193: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1328,1334 **** + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1332: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1336,1342 ---- + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1340: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1358,1364 **** + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1362: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1366,1372 ---- + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1370: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1409,1415 **** + # Extract the first word of "cl", so it can be a program name with args. + set dummy cl; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1413: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1417,1423 ---- + # Extract the first word of "cl", so it can be a program name with args. + set dummy cl; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:1421: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1441,1447 **** + fi + + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +! echo "configure:1445: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + + ac_ext=c + # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +--- 1449,1455 ---- + fi + + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +! echo "configure:1453: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + + ac_ext=c + # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +*************** +*** 1452,1463 **** + + cat > conftest.$ac_ext << EOF + +! #line 1456 "configure" + #include "confdefs.h" + + main(){return(0);} + EOF +! if { (eval echo configure:1461: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then +--- 1460,1471 ---- + + cat > conftest.$ac_ext << EOF + +! #line 1464 "configure" + #include "confdefs.h" + + main(){return(0);} + EOF +! if { (eval echo configure:1469: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then +*************** +*** 1483,1494 **** + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } + fi + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +! echo "configure:1487: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 + echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 + cross_compiling=$ac_cv_prog_cc_cross + + echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +! echo "configure:1492: checking whether we are using GNU C" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1491,1502 ---- + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } + fi + echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +! echo "configure:1495: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 + echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 + cross_compiling=$ac_cv_prog_cc_cross + + echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +! echo "configure:1500: checking whether we are using GNU C" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1497,1503 **** + yes; + #endif + EOF +! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1501: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes + else + ac_cv_prog_gcc=no +--- 1505,1511 ---- + yes; + #endif + EOF +! if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1509: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes + else + ac_cv_prog_gcc=no +*************** +*** 1516,1522 **** + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +! echo "configure:1520: checking whether ${CC-cc} accepts -g" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 1524,1530 ---- + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +! echo "configure:1528: checking whether ${CC-cc} accepts -g" >&5 + if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 1549,1555 **** + + + echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +! echo "configure:1553: checking how to run the C preprocessor" >&5 + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +--- 1557,1563 ---- + + + echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +! echo "configure:1561: checking how to run the C preprocessor" >&5 + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +*************** +*** 1564,1576 **** + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext <<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> +*************** +*** 8625,8636 **** + # Check for some other useful functions that are not ever-present. + # + echo $ac_n "checking for strsep""... $ac_c" 1>&6 +! echo "configure:8629: checking for strsep" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8634 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strsep(); below. */ +--- 8633,8644 ---- + # Check for some other useful functions that are not ever-present. + # + echo $ac_n "checking for strsep""... $ac_c" 1>&6 +! echo "configure:8637: checking for strsep" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strsep'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8642 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strsep(); below. */ +*************** +*** 8653,8659 **** + + ; return 0; } + EOF +! if { (eval echo configure:8657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strsep=yes" + else +--- 8661,8667 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strsep=yes" + else +*************** +*** 8674,8685 **** + fi + + echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6 +! echo "configure:8678: checking for vsnprintf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8683 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char vsnprintf(); below. */ +--- 8682,8693 ---- + fi + + echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6 +! echo "configure:8686: checking for vsnprintf" >&5 + if eval "test \"`echo '$''{'ac_cv_func_vsnprintf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8691 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char vsnprintf(); below. */ +*************** +*** 8702,8708 **** + + ; return 0; } + EOF +! if { (eval echo configure:8706: \"$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 +--- 8710,8716 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_vsnprintf=yes" + else +*************** +*** 8727,8738 **** + + + echo $ac_n "checking for strerror""... $ac_c" 1>&6 +! echo "configure:8731: checking for strerror" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8736 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strerror(); below. */ +--- 8735,8746 ---- + + + echo $ac_n "checking for strerror""... $ac_c" 1>&6 +! echo "configure:8739: checking for strerror" >&5 + if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8744 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char strerror(); below. */ +*************** +*** 8755,8761 **** + + ; return 0; } + EOF +! if { (eval echo configure:8759: \"$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 +--- 8763,8769 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_strerror=yes" + else +*************** +*** 8789,8805 **** + # but that's defined elsewhere since we don't use configure on Win32. + # + echo $ac_n "checking printf format modifier for 64-bit integers""... $ac_c" 1>&6 +! echo "configure:8793: checking printf format modifier for 64-bit integers" >&5 + if test "$cross_compiling" = yes; then + echo "$ac_t""assuming target platform uses ll" 1>&6 + ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' + else + cat > conftest.$ac_ext <<EOF +! #line 8799 "configure" + #include "confdefs.h" + main() { exit(!(sizeof(long long int) == sizeof(long int))); } + EOF +! if { (eval echo configure:8803: \"$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"' +--- 8797,8813 ---- + # but that's defined elsewhere since we don't use configure on Win32. + # + echo $ac_n "checking printf format modifier for 64-bit integers""... $ac_c" 1>&6 +! echo "configure:8801: checking printf format modifier for 64-bit integers" >&5 + if test "$cross_compiling" = yes; then + echo "$ac_t""assuming target platform uses ll" 1>&6 + ISC_PLATFORM_QUADFORMAT='#define ISC_PLATFORM_QUADFORMAT "ll"' + else + cat > conftest.$ac_ext <<EOF +! #line 8807 "configure" + #include "confdefs.h" + main() { exit(!(sizeof(long long int) == sizeof(long int))); } + EOF +! if { (eval echo configure:8811: \"$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"' +*************** +*** 8819,8830 **** + # Security Stuff + # + echo $ac_n "checking for chroot""... $ac_c" 1>&6 +! echo "configure:8823: checking for chroot" >&5 + if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8828 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char chroot(); below. */ +--- 8827,8838 ---- + # Security Stuff + # + echo $ac_n "checking for chroot""... $ac_c" 1>&6 +! echo "configure:8831: checking for chroot" >&5 + if eval "test \"`echo '$''{'ac_cv_func_chroot'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8836 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char chroot(); below. */ +*************** +*** 8847,8853 **** + + ; return 0; } + EOF +! if { (eval echo configure:8851: \"$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 +--- 8855,8861 ---- + + ; return 0; } + EOF +! if { (eval echo configure:8859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_chroot=yes" + else +*************** +*** 8881,8897 **** + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:8885: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8890 "configure" + #include "confdefs.h" + #include <$ac_hdr> + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:8895: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 8889,8905 ---- + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:8893: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8898 "configure" + #include "confdefs.h" + #include <$ac_hdr> + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:8903: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 8925,8941 **** + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:8929: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8934 "configure" + #include "confdefs.h" + #include <$ac_hdr> + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:8939: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +--- 8933,8949 ---- + do + ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +! echo "configure:8937: checking for $ac_hdr" >&5 + if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else + cat > conftest.$ac_ext <<EOF +! #line 8942 "configure" + #include "confdefs.h" + #include <$ac_hdr> + EOF + ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +! { (eval echo configure:8947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } + ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` + if test -z "$ac_err"; then + rm -rf conftest* +*************** +*** 8966,8974 **** + # BSD/OS, and perhaps some others, don't define rlim_t. + # + echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 +! echo "configure:8970: checking for type rlim_t" >&5 + cat > conftest.$ac_ext <<EOF +! #line 8972 "configure" + #include "confdefs.h" + + #include <sys/types.h> +--- 8974,8982 ---- + # BSD/OS, and perhaps some others, don't define rlim_t. + # + echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 +! echo "configure:8978: checking for type rlim_t" >&5 + cat > conftest.$ac_ext <<EOF +! #line 8980 "configure" + #include "confdefs.h" + + #include <sys/types.h> +*************** +*** 8978,8984 **** + rlim_t rl = 19671212; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8982: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t" +--- 8986,8992 ---- + rlim_t rl = 19671212; return (0); + ; return 0; } + EOF +! if { (eval echo configure:8990: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE rlim_t" +*************** +*** 8989,9000 **** + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6 +! echo "configure:8993: checking type of rlim_cur" >&5 + if test "$cross_compiling" = yes; then + { echo "configure: error: cannot determine type of rlim_cur when cross compiling - define rlim_t" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 8998 "configure" + #include "confdefs.h" + + #include <sys/types.h> +--- 8997,9008 ---- + echo "$ac_t""no" 1>&6 + + echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6 +! echo "configure:9001: checking type of rlim_cur" >&5 + if test "$cross_compiling" = yes; then + { echo "configure: error: cannot determine type of rlim_cur when cross compiling - define rlim_t" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<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(int)));} + EOF +! if { (eval echo configure:9006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int" +--- 9010,9016 ---- + #include <sys/resource.h> + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(int)));} + EOF +! if { (eval echo configure:9014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE int" +*************** +*** 9015,9021 **** + { echo "configure: error: this cannot happen" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<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 int)));} + EOF +! if { (eval echo configure:9027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int" +--- 9031,9037 ---- + #include <sys/resource.h> + main() { struct rlimit r; exit(!(sizeof(r.rlim_cur) == sizeof(long int)));} + EOF +! if { (eval echo configure:9035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long int" +*************** +*** 9036,9042 **** + { echo "configure: error: this cannot happen" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 9040 "configure" + #include "confdefs.h" + + #include <sys/types.h> +--- 9044,9050 ---- + { echo "configure: error: this cannot happen" 1>&2; exit 1; } + else + cat > conftest.$ac_ext <<EOF +! #line 9048 "configure" + #include "confdefs.h" + + #include <sys/types.h> +*************** +*** 9044,9050 **** + #include <sys/resource.h> + main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));} + EOF +! if { (eval echo configure:9048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" +--- 9052,9058 ---- + #include <sys/resource.h> + main() { struct rlimit r; exit((!sizeof(r.rlim_cur) == sizeof(long long int)));} + EOF +! if { (eval echo configure:9056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null + then + echo "$ac_t""long long int" 1>&6 + ISC_PLATFORM_RLIMITTYPE="#define ISC_PLATFORM_RLIMITTYPE long long int" +*************** +*** 9168,9174 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9172: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_OPENJADE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 9176,9182 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9180: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_OPENJADE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 9215,9221 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9219: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_JADETEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 9223,9229 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9227: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_JADETEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 9258,9264 **** + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9262: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PDFJADETEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +--- 9266,9272 ---- + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 + echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +! echo "configure:9270: checking for $ac_word" >&5 + if eval "test \"`echo '$''{'ac_cv_path_PDFJADETEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 + else +*************** +*** 9314,9320 **** + + SGMLCATALOG="" + echo $ac_n "checking for catalog""... $ac_c" 1>&6 +! echo "configure:9318: checking for catalog" >&5 + for d in $sgmltrees + do + f=$d/catalog +--- 9322,9328 ---- + + SGMLCATALOG="" + echo $ac_n "checking for catalog""... $ac_c" 1>&6 +! echo "configure:9326: checking for catalog" >&5 + for d in $sgmltrees + do + f=$d/catalog +*************** +*** 9356,9362 **** + + HTMLSTYLE="" + echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6 +! echo "configure:9360: checking for html/docbook.dsl" >&5 + for d in $stylepath + do + f=$d/html/docbook.dsl +--- 9364,9370 ---- + + HTMLSTYLE="" + echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6 +! echo "configure:9368: checking for html/docbook.dsl" >&5 + for d in $stylepath + do + f=$d/html/docbook.dsl +*************** +*** 9377,9383 **** + + PRINTSTYLE="" + echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6 +! echo "configure:9381: checking for print/docbook.dsl" >&5 + for d in $stylepath + do + f=$d/print/docbook.dsl +--- 9385,9391 ---- + + PRINTSTYLE="" + echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6 +! echo "configure:9389: checking for print/docbook.dsl" >&5 + for d in $stylepath + do + f=$d/print/docbook.dsl +*************** +*** 9403,9409 **** + + XMLDCL="" + echo $ac_n "checking for docbook/dsssl/modular/dtds/decls/xml.dcl""... $ac_c" 1>&6 +! echo "configure:9407: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5 + for d in $sgmltrees + do + f=$d/docbook/dsssl/modular/dtds/decls/xml.dcl +--- 9411,9417 ---- + + XMLDCL="" + echo $ac_n "checking for docbook/dsssl/modular/dtds/decls/xml.dcl""... $ac_c" 1>&6 +! echo "configure:9415: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5 + for d in $sgmltrees + do + f=$d/docbook/dsssl/modular/dtds/decls/xml.dcl +*************** +*** 9429,9435 **** + + DOCBOOK2MANSPEC="" + echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6 +! echo "configure:9433: checking for docbook2X/docbook2man-spec.pl" >&5 + for d in $sgmltrees + do + f=$d/docbook2X/docbook2man-spec.pl +--- 9437,9443 ---- + + DOCBOOK2MANSPEC="" + echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6 +! echo "configure:9441: checking for docbook2X/docbook2man-spec.pl" >&5 + for d in $sgmltrees + do + f=$d/docbook2X/docbook2man-spec.pl +*************** +*** 9449,9454 **** +--- 9457,9649 ---- + + + # ++ # MDN support ++ # ++ # Check whether --with-mdn or --without-mdn was given. ++ if test "${with_mdn+set}" = set; then ++ withval="$with_mdn" ++ use_mdn="$withval" ++ else ++ use_mdn="no" ++ fi ++ ++ case "$use_mdn" in ++ yes) ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi ++ ;; ++ no) ++ ;; ++ *) ++ mdn_path="$use_mdn" ++ ;; ++ esac ++ ++ iconvinc= ++ iconvlib= ++ # Check whether --with-libiconv or --without-libiconv was given. ++ if test "${with_libiconv+set}" = set; then ++ withval="$with_libiconv" ++ use_libiconv="$withval" ++ else ++ use_libiconv="no" ++ fi ++ ++ case "$use_libiconv" in ++ yes) ++ if test X$prefix = XNONE ; then ++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" ++ else ++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv" ++ fi ++ ;; ++ no) ++ iconvlib= ++ ;; ++ *) ++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" ++ ;; ++ esac ++ ++ # Check whether --with-iconv or --without-iconv was given. ++ if test "${with_iconv+set}" = set; then ++ withval="$with_iconv" ++ iconvlib="$withval" ++ fi ++ ++ case "$iconvlib" in ++ no) ++ iconvlib= ++ ;; ++ yes) ++ iconvlib=-liconv ++ ;; ++ esac ++ ++ # Check whether --with-mdnlib or --without-mdnlib was given. ++ if test "${with_mdnlib+set}" = set; then ++ withval="$with_mdnlib" ++ mdnlib="$withval" ++ else ++ mdnlib="no" ++ fi ++ ++ if test "$mdnlib" = yes; then ++ { echo "configure: error: You must specify ARG for --with-mdnlib." 1>&2; exit 1; } ++ fi ++ ++ if test "$use_mdn" != no; then ++ cat >> confdefs.h <<\EOF ++ #define WITH_MDN 1 ++ EOF ++ ++ STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" ++ if test "$mdnlib" != no; then ++ LIBS="$mdnlib $iconvlib $LIBS" ++ else ++ LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS" ++ fi ++ fi ++ for ac_hdr in locale.h ++ do ++ ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++ echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++ echo "configure:9555: checking for $ac_hdr" >&5 ++ if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <<EOF ++ #line 9560 "configure" ++ #include "confdefs.h" ++ #include <$ac_hdr> ++ EOF ++ ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++ { (eval echo configure:9565: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++ if test -z "$ac_err"; then ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=yes" ++ else ++ echo "$ac_err" >&5 ++ echo "configure: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=no" ++ fi ++ rm -f conftest* ++ fi ++ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` ++ cat >> confdefs.h <<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:9594: checking for $ac_func" >&5 ++ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++ else ++ cat > conftest.$ac_ext <<EOF ++ #line 9599 "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:9622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=yes" ++ else ++ echo "configure: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_func_$ac_func=no" ++ fi ++ rm -f conftest* ++ fi ++ ++ if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ++ cat >> confdefs.h <<EOF ++ #define $ac_tr_func 1 ++ EOF ++ ++ else ++ echo "$ac_t""no" 1>&6 ++ fi ++ done ++ ++ ++ # + # Substitutions + # + +*************** +*** 9849,9855 **** + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. +! ac_max_sed_cmds=50 # Maximum number of lines to put in a sed script. + ac_file=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_cmds # Line after last line for current file. +--- 10044,10050 ---- + + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. +! ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. + ac_file=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_cmds # Line after last line for current file. +Index: configure.in +diff -c mdn/othersrc/bind9/configure.in:1.1.1.8 mdn/othersrc/bind9/configure.in:1.11 +*** configure.in Tue Nov 27 16:55:48 2001 +--- configure.in Thu Nov 29 18:45:14 2001 +*************** +*** 1605,1610 **** +--- 1605,1683 ---- + NOM_PATH_FILE(DOCBOOK2MANSPEC, docbook2X/docbook2man-spec.pl, $sgmltrees) + + # ++ # MDN support ++ # ++ AC_ARG_WITH(mdn, ++ [ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]], ++ use_mdn="$withval", use_mdn="no") ++ case "$use_mdn" in ++ yes) ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi ++ ;; ++ no) ++ ;; ++ *) ++ mdn_path="$use_mdn" ++ ;; ++ esac ++ ++ iconvinc= ++ iconvlib= ++ AC_ARG_WITH(libiconv, ++ [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]], ++ use_libiconv="$withval", use_libiconv="no") ++ case "$use_libiconv" in ++ yes) ++ if test X$prefix = XNONE ; then ++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" ++ else ++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv" ++ fi ++ ;; ++ no) ++ iconvlib= ++ ;; ++ *) ++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" ++ ;; ++ esac ++ ++ AC_ARG_WITH(iconv, ++ [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]], ++ iconvlib="$withval") ++ case "$iconvlib" in ++ no) ++ iconvlib= ++ ;; ++ yes) ++ iconvlib=-liconv ++ ;; ++ esac ++ ++ AC_ARG_WITH(mdnlib, ++ [ --with-mdnlib=ARG specify libmdn], ++ mdnlib="$withval", mdnlib="no") ++ if test "$mdnlib" = yes; then ++ AC_MSG_ERROR([You must specify ARG for --with-mdnlib.]) ++ fi ++ ++ if test "$use_mdn" != no; then ++ AC_DEFINE(WITH_MDN, 1, [define if mDNkit support is to be included.]) ++ STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" ++ if test "$mdnlib" != no; then ++ LIBS="$mdnlib $iconvlib $LIBS" ++ else ++ LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS" ++ fi ++ fi ++ AC_CHECK_HEADERS(locale.h) ++ AC_CHECK_FUNCS(setlocale) ++ ++ # + # Substitutions + # + AC_SUBST(BIND9_TOP_BUILDDIR) +Index: bin/dig/dig.1 +diff -c mdn/othersrc/bind9/bin/dig/dig.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.1:1.2 +*** bin/dig/dig.1 Tue Nov 27 16:55:50 2001 +--- bin/dig/dig.1 Thu Nov 29 14:36:25 2001 +*************** +*** 73,79 **** + is the name of the resource record that is to be looked up. + .TP + \fBtype\fR +! indicates what type of query is required \(em + ANY, A, MX, SIG, etc. + \fItype\fR can be any valid query type. If no + \fItype\fR argument is supplied, +--- 73,79 ---- + is the name of the resource record that is to be looked up. + .TP + \fBtype\fR +! indicates what type of query is required + ANY, A, MX, SIG, etc. + \fItype\fR can be any valid query type. If no + \fItype\fR argument is supplied, +*************** +*** 336,341 **** +--- 336,352 ---- + \fI+noqr\fR which means that \fBdig\fR + will not print the initial query when it looks up the NS records for + isc.org. ++ .SH "MDN SUPPORT" ++ .PP ++ If \fBdig\fR has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ \fBdig\fR appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the \fBMDN_DISABLE\fR environment variable. ++ The MDN support is disabled if the the variable is set when ++ \fBdig\fR runs. + .SH "FILES" + .PP + \fI/etc/resolv.conf\fR +Index: bin/dig/dig.c +diff -c mdn/othersrc/bind9/bin/dig/dig.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/dig.c:1.7 +*** bin/dig/dig.c Tue Nov 27 16:55:50 2001 +--- bin/dig/dig.c Thu Nov 29 18:45:14 2001 +*************** +*** 1305,1310 **** +--- 1305,1315 ---- + } + ISC_LIST_APPEND(lookup_list, lookup, link); + } ++ ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + } + + /* +Index: bin/dig/dig.docbook +diff -c mdn/othersrc/bind9/bin/dig/dig.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/dig.docbook:1.2 +*** bin/dig/dig.docbook Tue Nov 27 16:55:50 2001 +--- bin/dig/dig.docbook Thu Nov 29 14:36:26 2001 +*************** +*** 502,507 **** +--- 502,522 ---- + </refsect1> + + <refsect1> ++ <title>MDN SUPPORT</title> ++ <para> ++ If <command>dig</command> has been built with mdn 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 MDN support for some reason, defines ++ the <envar>MDN_DISABLE</envar> environment variable. ++ The MDN 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.11 mdn/othersrc/bind9/bin/dig/dighost.c:1.26 +*** bin/dig/dighost.c Tue Nov 27 16:55:51 2001 +--- bin/dig/dighost.c Fri Nov 30 12:37:18 2001 +*************** +*** 32,37 **** +--- 32,48 ---- + #include <string.h> + #include <limits.h> + ++ #ifdef HAVE_LOCALE_H ++ #include <locale.h> ++ #endif ++ ++ #ifdef WITH_MDN ++ #include <mdn/result.h> ++ #include <mdn/log.h> ++ #include <mdn/resconf.h> ++ #include <mdn/res.h> ++ #endif ++ + #include <dns/byaddr.h> + #include <dns/fixedname.h> + #include <dns/message.h> +*************** +*** 130,135 **** +--- 141,160 ---- + isc_mutex_t lookup_lock; + dig_lookup_t *current_lookup = NULL; + ++ #ifdef WITH_MDN ++ mdn_resconf_t mdnconf; ++ ++ static void initialize_mdn(void); ++ static isc_result_t output_filter(isc_buffer_t *buffer, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++ static mdn_result_t append_textname(char *name, const char *origin, ++ size_t namesize); ++ static void mdn_check_result(mdn_result_t r, const char *msg); ++ ++ #define MAXDLEN 256 ++ #endif ++ + /* + * Apply and clear locks at the event level in global task. + * Can I get rid of these using shutdown events? XXX +*************** +*** 365,370 **** +--- 390,398 ---- + looknew->ignore = ISC_FALSE; + looknew->servfail_stops = ISC_FALSE; + looknew->besteffort = ISC_TRUE; ++ #ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++ #endif + looknew->dnssec = ISC_FALSE; + looknew->udpsize = 0; + looknew->recurse = ISC_TRUE; +*************** +*** 426,431 **** +--- 454,462 ---- + looknew->ignore = lookold->ignore; + looknew->servfail_stops = lookold->servfail_stops; + looknew->besteffort = lookold->besteffort; ++ #ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++ #endif + looknew->dnssec = lookold->dnssec; + looknew->udpsize = lookold->udpsize; + looknew->recurse = lookold->recurse; +*************** +*** 648,653 **** +--- 679,688 ---- + ISC_LIST_APPEND(server_list, srv, link); + } + ++ #ifdef WITH_MDN ++ initialize_mdn(); ++ #endif ++ + if (keyfile[0] != 0) + setup_file_key(); + else if (keysecret[0] != 0) +*************** +*** 1168,1174 **** +--- 1203,1220 ---- + isc_buffer_t b; + dns_compress_t cctx; + char store[MXNAME]; ++ #ifdef WITH_MDN ++ mdn_result_t mr; ++ char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME]; ++ #endif + ++ #ifdef WITH_MDN ++ if (lookup->mdn == ISC_TRUE) ++ dns_name_settotextfilter(output_filter); ++ else ++ dns_name_settotextfilter(NULL); ++ #endif ++ + REQUIRE(lookup != NULL); + INSIST(!free_now); + +*************** +*** 1196,1201 **** +--- 1242,1262 ---- + isc_buffer_init(&lookup->onamebuf, lookup->onamespace, + sizeof(lookup->onamespace)); + ++ #ifdef WITH_MDN ++ if (lookup->mdn) { ++ /* ++ * We cannot convert `textname' and `origin' separately. ++ * `textname' doesn't contain TLD, but local mapping needs ++ * TLD. ++ */ ++ mr = mdn_res_nameconv(mdnconf, "ld", lookup->textname, ++ utf8_textname, sizeof(utf8_textname)); ++ mdn_check_result(mr, "convert textname to UTF-8"); ++ } else { ++ strcpy(utf8_textname, lookup->textname); ++ } ++ #endif ++ + /* + * If the name has too many dots, force the origin to be NULL + * (which produces an absolute lookup). Otherwise, take the origin +*************** +*** 1204,1215 **** +--- 1265,1307 ---- + * is TRUE or we got a domain line in the resolv.conf file. + */ + /* XXX New search here? */ ++ #ifdef WITH_MDN ++ if ((count_dots(utf8_textname) >= ndots) || !usesearch) ++ lookup->origin = NULL; /* Force abs lookup */ ++ else if (lookup->origin == NULL && lookup->new_search && usesearch) { ++ lookup->origin = ISC_LIST_HEAD(search_list); ++ } ++ #else + if ((count_dots(lookup->textname) >= ndots) || !usesearch) + lookup->origin = NULL; /* Force abs lookup */ + else if (lookup->origin == NULL && lookup->new_search && usesearch) { + lookup->origin = ISC_LIST_HEAD(search_list); + } ++ #endif ++ ++ #ifdef WITH_MDN ++ if (lookup->mdn) { ++ if (lookup->origin != NULL) { ++ mr = mdn_res_nameconv(mdnconf, "ld", ++ lookup->origin->origin, ++ utf8_origin, ++ sizeof(utf8_origin)); ++ mdn_check_result(mr, "convert origin to UTF-8"); ++ mr = append_textname(utf8_textname, utf8_origin, ++ sizeof(utf8_textname)); ++ mdn_check_result(mr, "append origin to textname"); ++ } ++ mr = mdn_res_nameconv(mdnconf, "MNI", utf8_textname, ++ idn_textname, sizeof(idn_textname)); ++ mdn_check_result(mr, "convert UTF-8 textname to IDN encoding"); ++ } ++ #endif ++ ++ #ifdef WITH_MDN ++ if (lookup->origin != NULL && !lookup->mdn) { ++ #else + if (lookup->origin != NULL) { ++ #endif + debug("trying origin %s", lookup->origin->origin); + result = dns_message_gettempname(lookup->sendmsg, + &lookup->oname); +*************** +*** 1253,1258 **** +--- 1345,1361 ---- + debug("using root origin"); + if (lookup->trace && lookup->trace_root) + dns_name_clone(dns_rootname, lookup->name); ++ #ifdef WITH_MDN ++ else if (lookup->mdn) { ++ len = strlen(idn_textname); ++ isc_buffer_init(&b, idn_textname, len); ++ isc_buffer_add(&b, len); ++ result = dns_name_fromtext(lookup->name, &b, ++ dns_rootname, ++ ISC_FALSE, ++ &lookup->namebuf); ++ } ++ #endif + else { + len = strlen(lookup->textname); + isc_buffer_init(&b, lookup->textname, len); +*************** +*** 2588,2590 **** +--- 2691,2806 ---- + if (mctx != NULL) + isc_mem_destroy(&mctx); + } ++ ++ #ifdef WITH_MDN ++ static void ++ initialize_mdn(void) { ++ mdn_result_t r; ++ ++ #ifdef HAVE_SETLOCALE ++ /* Set locale */ ++ (void)setlocale(LC_ALL, ""); ++ #endif ++ ++ /* General initialization. */ ++ r = mdn_resconf_initialize(); ++ if (r != mdn_success) ++ fatal("mdn initialization failed: %s", ++ mdn_result_tostring(r)); ++ ++ /* Create configuration context. */ ++ r = mdn_resconf_create(&mdnconf); ++ if (r != mdn_success) ++ fatal("mdn resconf initialization failed: %s", ++ mdn_result_tostring(r)); ++ ++ ++ /* Load mdn configuration file. */ ++ r = mdn_resconf_loadfile(mdnconf, NULL); ++ if (r != mdn_success) ++ fatal("mdn configuration loading failed: %s", ++ mdn_result_tostring(r)); ++ ++ /* Set domain name -> text post-conversion filter. */ ++ dns_name_settotextfilter(output_filter); ++ } ++ ++ static isc_result_t ++ output_filter(isc_buffer_t *buffer, unsigned int used_org, ++ isc_boolean_t absolute) ++ { ++ char tmp1[MAXDLEN], tmp2[MAXDLEN]; ++ size_t fromlen, tolen; ++ isc_boolean_t end_with_dot; ++ ++ /* ++ * Copy contents of 'buffer' to 'tmp1', supply trailing dot ++ * if 'absolute' is true, and terminate with NUL. ++ */ ++ fromlen = isc_buffer_usedlength(buffer) - used_org; ++ if (fromlen >= MAXDLEN) ++ return (ISC_R_SUCCESS); ++ memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen); ++ end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; ++ if (absolute && !end_with_dot) { ++ fromlen++; ++ if (fromlen >= MAXDLEN) ++ return (ISC_R_SUCCESS); ++ tmp1[fromlen - 1] = '.'; ++ } ++ tmp1[fromlen] = '\0'; ++ ++ /* ++ * Convert contents of 'tmp1' to local encoding. ++ */ ++ if (mdn_res_nameconv(mdnconf, "i!NL", tmp1, tmp2, MAXDLEN) ++ != mdn_success) ++ return (ISC_R_SUCCESS); ++ strcpy(tmp1, tmp2); ++ ++ /* ++ * Copy the converted contents in 'tmp1' back to 'buffer'. ++ * If we have appended trailing dot, remove it. ++ */ ++ tolen = strlen(tmp1); ++ if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') ++ tolen--; ++ ++ if (isc_buffer_length(buffer) < used_org + tolen) ++ return (ISC_R_NOSPACE); ++ ++ isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org); ++ memcpy(isc_buffer_used(buffer), tmp1, tolen); ++ isc_buffer_add(buffer, tolen); ++ ++ return (ISC_R_SUCCESS); ++ } ++ ++ static mdn_result_t ++ append_textname(char *name, const char *origin, size_t namesize) { ++ size_t namelen = strlen(name); ++ size_t originlen = strlen(origin); ++ ++ /* Already absolute? */ ++ if (namelen > 0 && name[namelen - 1] == '.') ++ return mdn_success; ++ ++ /* Append dot and origin */ ++ ++ if (namelen + 1 + originlen >= namesize) ++ return mdn_buffer_overflow; ++ ++ name[namelen++] = '.'; ++ (void)strcpy(name + namelen, origin); ++ return mdn_success; ++ } ++ ++ static void ++ mdn_check_result(mdn_result_t r, const char *msg) { ++ if (r != mdn_success) { ++ exitcode = 1; ++ fatal("%s: %s", msg, mdn_result_tostring(r)); ++ } ++ } ++ ++ #endif /* WITH_MDN */ +Index: bin/dig/host.1 +diff -c mdn/othersrc/bind9/bin/dig/host.1:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.1:1.2 +*** bin/dig/host.1 Tue Nov 27 16:55:51 2001 +--- bin/dig/host.1 Thu Nov 29 14:36:26 2001 +*************** +*** 87,94 **** + retries will default to 1. + .PP + Non-recursive queries can be made via the \fB-r\fR option. +! Setting this option clears the \fBRD\fR \(em recursion +! desired \(em bit in the query which \fBhost\fR makes. + This should mean that the name server receiving the query will not + attempt to resolve \fIname\fR. The + \fB-r\fR option enables \fBhost\fR to mimic +--- 87,94 ---- + retries will default to 1. + .PP + Non-recursive queries can be made via the \fB-r\fR option. +! Setting this option clears the \fBRD\fR recursion +! desired bit in the query which \fBhost\fR makes. + This should mean that the name server receiving the query will not + attempt to resolve \fIname\fR. The + \fB-r\fR option enables \fBhost\fR to mimic +*************** +*** 120,125 **** +--- 120,136 ---- + effectively wait forever for a reply. The time to wait for a response + will be set to the number of seconds given by the hardware's maximum + value for an integer quantity. ++ .SH "MDN SUPPORT" ++ .PP ++ If \fBhost\fR has been built with mdn support, it can ++ accept and display non-ASCII domain names. ++ \fBhost\fR appropriately converts character encoding of ++ domain name before sending a request to DNS server or displaying a ++ reply from the server. ++ If you'd like to turn off the MDN support for some reason, defines ++ the \fBMDN_DISABLE\fR environment variable. ++ The MDN support is disabled if the the variable is set when ++ \fBhost\fR runs. + .SH "FILES" + .PP + \fI/etc/resolv.conf\fR +Index: bin/dig/host.c +diff -c mdn/othersrc/bind9/bin/dig/host.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/host.c:1.7 +*** bin/dig/host.c Tue Nov 27 16:55:51 2001 +--- bin/dig/host.c Thu Nov 29 18:45:14 2001 +*************** +*** 666,671 **** +--- 666,676 ---- + lookup->new_search = ISC_TRUE; + ISC_LIST_APPEND(lookup_list, lookup, link); + ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif ++ + usesearch = ISC_TRUE; + } + +Index: bin/dig/host.docbook +diff -c mdn/othersrc/bind9/bin/dig/host.docbook:1.1.1.1 mdn/othersrc/bind9/bin/dig/host.docbook:1.2 +*** bin/dig/host.docbook Tue Nov 27 16:55:51 2001 +--- bin/dig/host.docbook Thu Nov 29 14:36:26 2001 +*************** +*** 181,186 **** +--- 181,201 ---- + </refsect1> + + <refsect1> ++ <title>MDN SUPPORT</title> ++ <para> ++ If <command>host</command> has been built with mdn 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 MDN support for some reason, defines ++ the <envar>MDN_DISABLE</envar> environment variable. ++ The MDN 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: bin/dig/nslookup.c +diff -c mdn/othersrc/bind9/bin/dig/nslookup.c:1.1.1.8 mdn/othersrc/bind9/bin/dig/nslookup.c:1.7 +*** bin/dig/nslookup.c Tue Nov 27 16:55:51 2001 +--- bin/dig/nslookup.c Thu Nov 29 18:45:14 2001 +*************** +*** 656,661 **** +--- 656,665 ---- + ISC_LIST_APPEND(lookup_list, lookup, link); + lookup->origin = NULL; + ISC_LIST_INIT(lookup->my_server_list); ++ #ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++ #endif + debug("looking up %s", lookup->textname); + } + +Index: bin/dig/include/dig/dig.h +diff -c mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.1.1.6 mdn/othersrc/bind9/bin/dig/include/dig/dig.h:1.7 +*** bin/dig/include/dig/dig.h Tue Nov 27 16:55:51 2001 +--- bin/dig/include/dig/dig.h Thu Nov 29 18:45:14 2001 +*************** +*** 74,79 **** +--- 74,86 ---- + * be 1. + */ + ++ /* ++ * Name of environment variable which disables MDN support if defined. ++ */ ++ #ifdef WITH_MDN ++ #define MDN_DISABLE_ENVVAR_NAME "MDN_DISABLE" ++ #endif ++ + ISC_LANG_BEGINDECLS + + typedef struct dig_lookup dig_lookup_t; +*************** +*** 109,114 **** +--- 116,124 ---- + servfail_stops, + new_search, + besteffort, ++ #ifdef WITH_MDN ++ mdn, ++ #endif + dnssec; + char textname[MXNAME]; /* Name we're going to be looking up */ + char cmdline[MXNAME]; +Index: lib/dns/name.c +diff -c mdn/othersrc/bind9/lib/dns/name.c:1.1.1.9 mdn/othersrc/bind9/lib/dns/name.c:1.12 +*** lib/dns/name.c Tue Nov 27 16:57:32 2001 +--- lib/dns/name.c Thu Nov 29 18:45:14 2001 +*************** +*** 194,199 **** +--- 194,206 ---- + /* XXXDCL make const? */ + dns_name_t *dns_wildcardname = &wild; + ++ #ifdef WITH_MDN ++ /* ++ * dns_name_t to text post-conversion procedure. ++ */ ++ static dns_name_totextfilter_t totext_filter_proc = NULL; ++ #endif ++ + static void + set_offsets(const dns_name_t *name, unsigned char *offsets, + dns_name_t *set_name); +*************** +*** 1682,1687 **** +--- 1689,1697 ---- + unsigned int labels; + isc_boolean_t saw_root = ISC_FALSE; + char num[4]; ++ #ifdef WITH_MDN ++ unsigned int oused = target->used; ++ #endif + + /* + * This function assumes the name is in proper uncompressed +*************** +*** 1859,1864 **** +--- 1869,1878 ---- + + isc_buffer_add(target, tlen - trem); + ++ #ifdef WITH_MDN ++ if (totext_filter_proc != NULL) ++ return ((*totext_filter_proc)(target, oused, saw_root)); ++ #endif + return (ISC_R_SUCCESS); + } + +*************** +*** 3315,3317 **** +--- 3329,3337 ---- + return (ISC_R_SUCCESS); + } + ++ #ifdef WITH_MDN ++ void ++ dns_name_settotextfilter(dns_name_totextfilter_t proc) { ++ totext_filter_proc = proc; ++ } ++ #endif +Index: lib/dns/include/dns/name.h +diff -c mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.1.1.6 mdn/othersrc/bind9/lib/dns/include/dns/name.h:1.8 +*** lib/dns/include/dns/name.h Tue Nov 27 16:57:38 2001 +--- lib/dns/include/dns/name.h Thu Nov 29 18:45:14 2001 +*************** +*** 218,223 **** +--- 218,234 ---- + */ + #define DNS_NAME_MAXWIRE 255 + ++ #ifdef WITH_MDN ++ /* ++ * Text output filter procedure. ++ * 'target' is the buffer to be converted. The region to be converted ++ * is from 'buffer'->base + 'used_org' to the end of the used region. ++ */ ++ typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++ #endif ++ + /*** + *** Initialization + ***/ +*************** +*** 1243,1248 **** +--- 1254,1267 ---- + * 'size' > 0. + * + */ ++ ++ #ifdef WITH_MDN ++ void ++ dns_name_settotextfilter(dns_name_totextfilter_t proc); ++ /* ++ * Call 'proc' at the end of dns_name_totext. ++ */ ++ #endif /* WITH_MDN */ + + #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1) + /* diff --git a/contrib/idn/mdnkit/patch/bind9/patch.configure b/contrib/idn/mdnkit/patch/bind9/patch.configure index e69de29b..ee79348e 100644 --- a/contrib/idn/mdnkit/patch/bind9/patch.configure +++ b/contrib/idn/mdnkit/patch/bind9/patch.configure @@ -0,0 +1,2362 @@ +Index: configure +=================================================================== +RCS file: /proj/cvs/isc/bind9/configure,v +retrieving revision 1.284.2.8 +diff -u -u -2 -r1.284.2.8 configure +--- configure 2001/12/05 02:30:08 1.284.2.8 ++++ configure 2002/02/12 06:30:39 +@@ -370,4 +370,12 @@ + ac_help="$ac_help + --disable-linux-caps disable linux capabilities" ++ac_help="$ac_help ++ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]" ++ac_help="$ac_help ++ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]" ++ac_help="$ac_help ++ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]" ++ac_help="$ac_help ++ --with-mdnlib=ARG specify libmdn" + + # Initialize some variables set by options. +@@ -912,5 +920,5 @@ + + echo $ac_n "checking host system type""... $ac_c" 1>&6 +-echo "configure:915: checking host system type" >&5 ++echo "configure:923: checking host system type" >&5 + + host_alias=$host +@@ -934,5 +942,5 @@ + + echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +-echo "configure:937: checking whether ${MAKE-make} sets \${MAKE}" >&5 ++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 +@@ -963,5 +971,5 @@ + 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 ++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 +@@ -1002,5 +1010,5 @@ + # ./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 ++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 +@@ -1063,5 +1071,5 @@ + 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 ++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 +@@ -1122,5 +1130,5 @@ + 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 ++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 +@@ -1164,5 +1172,5 @@ + 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 ++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 +@@ -1182,5 +1190,5 @@ + 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 ++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 +@@ -1329,5 +1337,5 @@ + 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 ++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 +@@ -1359,5 +1367,5 @@ + 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 ++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 +@@ -1410,5 +1418,5 @@ + 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 ++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 +@@ -1442,5 +1450,5 @@ + + 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 ++echo "configure:1453: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + + ac_ext=c +@@ -1453,10 +1461,10 @@ + cat > conftest.$ac_ext << EOF + +-#line 1456 "configure" ++#line 1464 "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 ++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. +@@ -1484,10 +1492,10 @@ + 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 "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:1492: checking whether we are using GNU C" >&5 ++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 +@@ -1498,5 +1506,5 @@ + #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 ++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 +@@ -1517,5 +1525,5 @@ + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +-echo "configure:1520: checking whether ${CC-cc} accepts -g" >&5 ++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 +@@ -1550,5 +1558,5 @@ + + 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 ++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 +@@ -1565,5 +1573,5 @@ + # not just through cpp. + cat > conftest.$ac_ext <<EOF +-#line 1568 "configure" ++#line 1576 "configure" + #include "confdefs.h" + #include <assert.h> +@@ -1571,5 +1579,5 @@ + 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; } ++{ (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 +@@ -1582,5 +1590,5 @@ + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext <<EOF +-#line 1585 "configure" ++#line 1593 "configure" + #include "confdefs.h" + #include <assert.h> +@@ -1588,5 +1596,5 @@ + 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; } ++{ (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 +@@ -1599,5 +1607,5 @@ + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext <<EOF +-#line 1602 "configure" ++#line 1610 "configure" + #include "confdefs.h" + #include <assert.h> +@@ -1605,5 +1613,5 @@ + 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; } ++{ (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 +@@ -1630,10 +1638,10 @@ + + echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +-echo "configure:1633: checking for ANSI C header files" >&5 ++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 1638 "configure" ++#line 1646 "configure" + #include "confdefs.h" + #include <stdlib.h> +@@ -1643,5 +1651,5 @@ + 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; } ++{ (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 +@@ -1660,5 +1668,5 @@ + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat > conftest.$ac_ext <<EOF +-#line 1663 "configure" ++#line 1671 "configure" + #include "confdefs.h" + #include <string.h> +@@ -1678,5 +1686,5 @@ + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat > conftest.$ac_ext <<EOF +-#line 1681 "configure" ++#line 1689 "configure" + #include "confdefs.h" + #include <stdlib.h> +@@ -1699,5 +1707,5 @@ + else + cat > conftest.$ac_ext <<EOF +-#line 1702 "configure" ++#line 1710 "configure" + #include "confdefs.h" + #include <ctype.h> +@@ -1710,5 +1718,5 @@ + + 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 ++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 + : +@@ -1738,15 +1746,15 @@ + 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 ++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 1746 "configure" ++#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:1751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++{ (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 +@@ -1776,10 +1784,10 @@ + + echo $ac_n "checking for working const""... $ac_c" 1>&6 +-echo "configure:1779: checking for working const" >&5 ++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 1784 "configure" ++#line 1792 "configure" + #include "confdefs.h" + +@@ -1830,5 +1838,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:1833: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:1841: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes +@@ -1851,5 +1859,5 @@ + + echo $ac_n "checking for inline""... $ac_c" 1>&6 +-echo "configure:1854: checking for inline" >&5 ++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 +@@ -1858,5 +1866,5 @@ + for ac_kw in inline __inline__ __inline; do + cat > conftest.$ac_ext <<EOF +-#line 1861 "configure" ++#line 1869 "configure" + #include "confdefs.h" + +@@ -1865,5 +1873,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:1868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++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 +@@ -1891,10 +1899,10 @@ + + echo $ac_n "checking for sysctlbyname""... $ac_c" 1>&6 +-echo "configure:1894: checking for sysctlbyname" >&5 ++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 1899 "configure" ++#line 1907 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -1919,5 +1927,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:1922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -1947,7 +1955,7 @@ + # + echo $ac_n "checking for static inline breakage""... $ac_c" 1>&6 +-echo "configure:1950: checking for static inline breakage" >&5 ++echo "configure:1958: checking for static inline breakage" >&5 + cat > conftest.$ac_ext <<EOF +-#line 1952 "configure" ++#line 1960 "configure" + #include "confdefs.h" + +@@ -1966,5 +1974,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:1969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:1977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""no" 1>&6 +@@ -1982,10 +1990,10 @@ + + echo $ac_n "checking for size_t""... $ac_c" 1>&6 +-echo "configure:1985: checking for size_t" >&5 ++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 1990 "configure" ++#line 1998 "configure" + #include "confdefs.h" + #include <sys/types.h> +@@ -2015,10 +2023,10 @@ + + echo $ac_n "checking for ssize_t""... $ac_c" 1>&6 +-echo "configure:2018: checking for ssize_t" >&5 ++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 2023 "configure" ++#line 2031 "configure" + #include "confdefs.h" + #include <sys/types.h> +@@ -2048,10 +2056,10 @@ + + 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 ++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 2056 "configure" ++#line 2064 "configure" + #include "confdefs.h" + #include <sys/types.h> +@@ -2062,5 +2070,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2065: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:2073: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes +@@ -2083,7 +2091,7 @@ + + echo $ac_n "checking for long long""... $ac_c" 1>&6 +-echo "configure:2086: checking for long long" >&5 ++echo "configure:2094: checking for long long" >&5 + cat > conftest.$ac_ext <<EOF +-#line 2088 "configure" ++#line 2096 "configure" + #include "confdefs.h" + +@@ -2092,5 +2100,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2095: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:2103: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -2112,7 +2120,7 @@ + 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 ++echo "configure:2123: checking if unistd.h defines fd_set" >&5 + cat > conftest.$ac_ext <<EOF +-#line 2117 "configure" ++#line 2125 "configure" + #include "confdefs.h" + +@@ -2122,5 +2130,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2125: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:2133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -2164,5 +2172,5 @@ + # + echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +-echo "configure:2167: checking whether byte ordering is bigendian" >&5 ++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 +@@ -2171,5 +2179,5 @@ + # See if sys/param.h defines the BYTE_ORDER macro. + cat > conftest.$ac_ext <<EOF +-#line 2174 "configure" ++#line 2182 "configure" + #include "confdefs.h" + #include <sys/types.h> +@@ -2182,9 +2190,9 @@ + ; return 0; } + EOF +-if { (eval echo configure:2185: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++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 2189 "configure" ++#line 2197 "configure" + #include "confdefs.h" + #include <sys/types.h> +@@ -2197,5 +2205,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2200: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:2208: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes +@@ -2217,5 +2225,5 @@ + else + cat > conftest.$ac_ext <<EOF +-#line 2220 "configure" ++#line 2228 "configure" + #include "confdefs.h" + main () { +@@ -2230,5 +2238,5 @@ + } + 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 ++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 +@@ -2258,5 +2266,5 @@ + # + echo $ac_n "checking for OpenSSL library""... $ac_c" 1>&6 +-echo "configure:2261: checking for OpenSSL library" >&5 ++echo "configure:2269: checking for OpenSSL library" >&5 + # Check whether --with-openssl or --without-openssl was given. + if test "${with_openssl+set}" = set; then +@@ -2299,5 +2307,5 @@ + + echo $ac_n "checking OpenSSL library version""... $ac_c" 1>&6 +-echo "configure:2302: checking OpenSSL library version" >&5 ++echo "configure:2310: checking OpenSSL library version" >&5 + saved_cflags="$CFLAGS" + saved_libs="$LIBS" +@@ -2308,5 +2316,5 @@ + else + cat > conftest.$ac_ext <<EOF +-#line 2311 "configure" ++#line 2319 "configure" + #include "confdefs.h" + +@@ -2323,5 +2331,5 @@ + + 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 ++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 +@@ -2388,5 +2396,5 @@ + # + echo $ac_n "checking for random device""... $ac_c" 1>&6 +-echo "configure:2391: checking for random device" >&5 ++echo "configure:2399: checking for random device" >&5 + # Check whether --with-randomdev or --without-randomdev was given. + if test "${with_randomdev+set}" = set; then +@@ -2412,5 +2420,5 @@ + ac_safe=`echo "$devrandom" | sed 'y%./+-%__p_%'` + echo $ac_n "checking for $devrandom""... $ac_c" 1>&6 +-echo "configure:2415: checking for $devrandom" >&5 ++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 +@@ -2464,5 +2472,5 @@ + + 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 ++echo "configure:2475: checking whether to build with thread support" >&5 + + case $host in +@@ -2552,5 +2560,5 @@ + 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 ++echo "configure:2563: checking which NetBSD thread library to use" >&5 + + # Check whether --with-ptl2 or --without-ptl2 was given. +@@ -2591,5 +2599,5 @@ + *) + echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 +-echo "configure:2594: checking for pthread_create in -lpthread" >&5 ++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 +@@ -2599,5 +2607,5 @@ + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 2602 "configure" ++#line 2610 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -2610,5 +2618,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -2636,5 +2644,5 @@ + 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 ++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 +@@ -2644,5 +2652,5 @@ + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 2647 "configure" ++#line 2655 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -2655,5 +2663,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -2681,5 +2689,5 @@ + 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 ++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 +@@ -2689,5 +2697,5 @@ + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 2692 "configure" ++#line 2700 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -2700,5 +2708,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -2726,5 +2734,5 @@ + 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 ++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 +@@ -2734,5 +2742,5 @@ + LIBS="-lc_r $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 2737 "configure" ++#line 2745 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -2745,5 +2753,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -2771,5 +2779,5 @@ + 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 ++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 +@@ -2779,5 +2787,5 @@ + LIBS="-lc $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 2782 "configure" ++#line 2790 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -2790,5 +2798,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++if { (eval echo configure:2801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +@@ -2836,5 +2844,5 @@ + # + echo $ac_n "checking for sigwait in -lc""... $ac_c" 1>&6 +-echo "configure:2839: checking for sigwait in -lc" >&5 ++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 +@@ -2844,5 +2852,5 @@ + LIBS="-lc $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 2847 "configure" ++#line 2855 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -2855,5 +2863,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -2877,5 +2885,5 @@ + 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 ++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 +@@ -2885,5 +2893,5 @@ + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 2888 "configure" ++#line 2896 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -2896,5 +2904,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -2918,5 +2926,5 @@ + 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 ++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 +@@ -2926,5 +2934,5 @@ + LIBS="-lpthread $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 2929 "configure" ++#line 2937 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -2937,5 +2945,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2940: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -2967,10 +2975,10 @@ + + echo $ac_n "checking for pthread_attr_getstacksize""... $ac_c" 1>&6 +-echo "configure:2970: checking for pthread_attr_getstacksize" >&5 ++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 2975 "configure" ++#line 2983 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -2995,5 +3003,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:2998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -3027,5 +3035,5 @@ + *-freebsd*) + echo $ac_n "checking for sigwait in -lc_r""... $ac_c" 1>&6 +-echo "configure:3030: checking for sigwait in -lc_r" >&5 ++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 +@@ -3035,5 +3043,5 @@ + LIBS="-lc_r $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 3038 "configure" ++#line 3046 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -3046,5 +3054,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -3101,10 +3109,10 @@ + + echo $ac_n "checking for pthread_setconcurrency""... $ac_c" 1>&6 +-echo "configure:3104: checking for pthread_setconcurrency" >&5 ++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 3109 "configure" ++#line 3117 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -3129,5 +3137,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -3167,10 +3175,10 @@ + # + echo $ac_n "checking for sysconf""... $ac_c" 1>&6 +-echo "configure:3170: checking for sysconf" >&5 ++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 3175 "configure" ++#line 3183 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -3195,5 +3203,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -3276,10 +3284,10 @@ + # + echo $ac_n "checking for flockfile""... $ac_c" 1>&6 +-echo "configure:3279: checking for flockfile" >&5 ++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 3284 "configure" ++#line 3292 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -3304,5 +3312,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -3327,10 +3335,10 @@ + + echo $ac_n "checking for getc_unlocked""... $ac_c" 1>&6 +-echo "configure:3330: checking for getc_unlocked" >&5 ++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 3335 "configure" ++#line 3343 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -3355,5 +3363,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -3382,5 +3390,5 @@ + # + echo $ac_n "checking whether to build with threads""... $ac_c" 1>&6 +-echo "configure:3385: checking whether to build with threads" >&5 ++echo "configure:3393: checking whether to build with threads" >&5 + if $use_threads; then + echo "$ac_t""yes" 1>&6 +@@ -3458,10 +3466,10 @@ + # + echo $ac_n "checking for catgets""... $ac_c" 1>&6 +-echo "configure:3461: checking for catgets" >&5 ++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 3466 "configure" ++#line 3474 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -3486,5 +3494,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -3524,5 +3532,5 @@ + *) + echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 +-echo "configure:3527: checking for socket in -lsocket" >&5 ++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 +@@ -3532,5 +3540,5 @@ + LIBS="-lsocket $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 3535 "configure" ++#line 3543 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -3543,5 +3551,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -3571,5 +3579,5 @@ + + echo $ac_n "checking for inet_ntoa in -lnsl""... $ac_c" 1>&6 +-echo "configure:3574: checking for inet_ntoa in -lnsl" >&5 ++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 +@@ -3579,5 +3587,5 @@ + LIBS="-lnsl $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 3582 "configure" ++#line 3590 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -3590,5 +3598,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -3624,5 +3632,5 @@ + # + echo $ac_n "checking whether to use purify""... $ac_c" 1>&6 +-echo "configure:3627: checking whether to use purify" >&5 ++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 +@@ -3641,5 +3649,5 @@ + 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 ++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 +@@ -3718,10 +3726,10 @@ + yes) + echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 +-echo "configure:3721: checking for Cygwin environment" >&5 ++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 3726 "configure" ++#line 3734 "configure" + #include "confdefs.h" + +@@ -3734,5 +3742,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:3745: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_cygwin=yes +@@ -3751,10 +3759,10 @@ + 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 ++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 3759 "configure" ++#line 3767 "configure" + #include "confdefs.h" + +@@ -3763,5 +3771,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:3766: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:3774: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_mingw32=yes +@@ -3849,5 +3857,5 @@ + + echo $ac_n "checking build system type""... $ac_c" 1>&6 +-echo "configure:3852: checking build system type" >&5 ++echo "configure:3860: checking build system type" >&5 + + build_alias=$build +@@ -3878,5 +3886,5 @@ + # 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 ++echo "configure:3889: checking for ld used by GCC" >&5 + case $host in + *-*-mingw*) +@@ -3908,8 +3916,8 @@ + 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 ++echo "configure:3919: 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 ++echo "configure:3922: checking for non-GNU ld" >&5 + fi + if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then +@@ -3946,5 +3954,5 @@ + 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 ++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 +@@ -3963,5 +3971,5 @@ + + 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 ++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 +@@ -3975,5 +3983,5 @@ + + echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 +-echo "configure:3978: checking for BSD-compatible nm" >&5 ++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 +@@ -4013,5 +4021,5 @@ + + echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +-echo "configure:4016: checking whether ln -s works" >&5 ++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 +@@ -4034,5 +4042,5 @@ + + echo $ac_n "checking how to recognise dependant libraries""... $ac_c" 1>&6 +-echo "configure:4037: checking how to recognise dependant libraries" >&5 ++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 +@@ -4207,5 +4215,5 @@ + + echo $ac_n "checking for object suffix""... $ac_c" 1>&6 +-echo "configure:4210: checking for object suffix" >&5 ++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 +@@ -4213,5 +4221,5 @@ + 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 ++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 +@@ -4233,5 +4241,5 @@ + + echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 +-echo "configure:4236: checking for executable suffix" >&5 ++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 +@@ -4243,5 +4251,5 @@ + 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 ++ if { (eval echo configure:4254: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + for file in conftest.*; do + case $file in +@@ -4274,5 +4282,5 @@ + # 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 ++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 +@@ -4350,8 +4358,8 @@ + EOF + +- if { (eval echo configure:4353: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ 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: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 ++ 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 +@@ -4404,5 +4412,5 @@ + 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 ++ if { (eval echo configure:4415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + fi +@@ -4450,15 +4458,15 @@ + 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 ++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 4458 "configure" ++#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:4463: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++{ (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 +@@ -4495,5 +4503,5 @@ + 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 ++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 +@@ -4557,5 +4565,5 @@ + if test -n "$ac_tool_prefix"; then + echo $ac_n "checking for file""... $ac_c" 1>&6 +-echo "configure:4560: checking for file" >&5 ++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 +@@ -4628,5 +4636,5 @@ + 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 ++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 +@@ -4660,5 +4668,5 @@ + 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 ++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 +@@ -4695,5 +4703,5 @@ + 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 ++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 +@@ -4727,5 +4735,5 @@ + 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 ++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 +@@ -4776,6 +4784,6 @@ + *-*-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 ++ 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*) +@@ -4798,5 +4806,5 @@ + 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 ++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 +@@ -4811,5 +4819,5 @@ + + cat > conftest.$ac_ext <<EOF +-#line 4814 "configure" ++#line 4822 "configure" + #include "confdefs.h" + +@@ -4818,5 +4826,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:4821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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 +@@ -4933,5 +4941,5 @@ + ## + echo $ac_n "checking for objdir""... $ac_c" 1>&6 +-echo "configure:4936: checking for objdir" >&5 ++echo "configure:4944: checking for objdir" >&5 + rm -f .libs 2>/dev/null + mkdir .libs 2>/dev/null +@@ -4964,5 +4972,5 @@ + # 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 ++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 +@@ -5116,5 +5124,5 @@ + # 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 ++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 +@@ -5123,5 +5131,5 @@ + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + cat > conftest.$ac_ext <<EOF +-#line 5126 "configure" ++#line 5134 "configure" + #include "confdefs.h" + +@@ -5130,5 +5138,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:5133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:5141: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + case $host_os in +@@ -5186,5 +5194,5 @@ + ## + 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 ++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 +@@ -5194,5 +5202,5 @@ + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + cat > conftest.$ac_ext <<EOF +-#line 5197 "configure" ++#line 5205 "configure" + #include "confdefs.h" + +@@ -5201,5 +5209,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:5204: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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 +@@ -5232,5 +5240,5 @@ + # 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 ++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 +@@ -5251,5 +5259,5 @@ + 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 ++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 +@@ -5280,5 +5288,5 @@ + # 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 ++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 +@@ -5289,5 +5297,5 @@ + CFLAGS="$CFLAGS -c -o conftest.lo" + cat > conftest.$ac_ext <<EOF +-#line 5292 "configure" ++#line 5300 "configure" + #include "confdefs.h" + +@@ -5296,5 +5304,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:5299: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++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 +@@ -5330,5 +5338,5 @@ + # 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 ++echo "configure:5341: checking if we can lock with hard links" >&5 + hard_links=yes + $rm conftest* +@@ -5353,5 +5361,5 @@ + # 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 "configure:5364: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" +@@ -5359,5 +5367,5 @@ + compiler_rtti_exceptions=no + cat > conftest.$ac_ext <<EOF +-#line 5362 "configure" ++#line 5370 "configure" + #include "confdefs.h" + +@@ -5366,5 +5374,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:5369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++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 +@@ -5397,5 +5405,5 @@ + # 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 ++echo "configure:5408: checking whether the linker ($LD) supports shared libraries" >&5 + + allow_undefined_flag= +@@ -6017,5 +6025,5 @@ + # 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 ++echo "configure:6028: checking how to hardcode library paths into programs" >&5 + hardcode_action= + if test -n "$hardcode_libdir_flag_spec" || \ +@@ -6049,5 +6057,5 @@ + 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 ++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" +@@ -6067,5 +6075,5 @@ + # 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 ++echo "configure:6078: checking dynamic linker characteristics" >&5 + library_names_spec= + libname_spec='lib$name' +@@ -6457,5 +6465,5 @@ + # 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 "configure:6468: checking if libtool supports shared libraries" >&5 + echo "$ac_t""$can_build_shared" 1>&6 + ## +@@ -6498,5 +6506,5 @@ + *) + echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 +-echo "configure:6501: checking for dlopen in -ldl" >&5 ++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 +@@ -6506,5 +6514,5 @@ + LIBS="-ldl $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 6509 "configure" ++#line 6517 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -6517,5 +6525,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:6520: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -6536,10 +6544,10 @@ + echo "$ac_t""no" 1>&6 + echo $ac_n "checking for dlopen""... $ac_c" 1>&6 +-echo "configure:6539: checking for dlopen" >&5 ++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 6544 "configure" ++#line 6552 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -6564,5 +6572,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:6567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -6582,10 +6590,10 @@ + 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 ++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 6590 "configure" ++#line 6598 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -6610,5 +6618,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:6613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -6628,5 +6636,5 @@ + 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 ++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 +@@ -6636,5 +6644,5 @@ + LIBS="-lsvld $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 6639 "configure" ++#line 6647 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -6647,5 +6655,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:6650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -6666,5 +6674,5 @@ + 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 ++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 +@@ -6674,5 +6682,5 @@ + LIBS="-ldld $LIBS" + cat > conftest.$ac_ext <<EOF +-#line 6677 "configure" ++#line 6685 "configure" + #include "confdefs.h" + /* Override any gcc2 internal prototype to avoid an error. */ +@@ -6685,5 +6693,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:6688: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -6738,5 +6746,5 @@ + + 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 ++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 +@@ -6748,5 +6756,5 @@ + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +-#line 6751 "configure" ++#line 6759 "configure" + #include "confdefs.h" + +@@ -6809,5 +6817,5 @@ + } + EOF +- if { (eval echo configure:6812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then ++ 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=$? +@@ -6832,5 +6840,5 @@ + 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 ++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 +@@ -6842,5 +6850,5 @@ + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<EOF +-#line 6845 "configure" ++#line 6853 "configure" + #include "confdefs.h" + +@@ -6903,5 +6911,5 @@ + } + EOF +- if { (eval echo configure:6906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then ++ 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=$? +@@ -6954,5 +6962,5 @@ + # 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 ++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 +@@ -6961,5 +6969,5 @@ + echo 'static int dummy;' > conftest.$ac_ext + +- if { (eval echo configure:6964: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++ if { (eval echo configure:6972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + soname=conftest + lib=conftest +@@ -6974,5 +6982,5 @@ + 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; } ++ 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 +@@ -7631,7 +7639,7 @@ + # + echo $ac_n "checking for IPv6 structures""... $ac_c" 1>&6 +-echo "configure:7634: checking for IPv6 structures" >&5 ++echo "configure:7642: checking for IPv6 structures" >&5 + cat > conftest.$ac_ext <<EOF +-#line 7636 "configure" ++#line 7644 "configure" + #include "confdefs.h" + +@@ -7643,5 +7651,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:7646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:7654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -7661,5 +7669,5 @@ + # + echo $ac_n "checking for Kame IPv6 support""... $ac_c" 1>&6 +-echo "configure:7664: checking for Kame IPv6 support" >&5 ++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 +@@ -7752,7 +7760,7 @@ + + echo $ac_n "checking for in6_addr""... $ac_c" 1>&6 +-echo "configure:7755: checking for in6_addr" >&5 ++echo "configure:7763: checking for in6_addr" >&5 + cat > conftest.$ac_ext <<EOF +-#line 7757 "configure" ++#line 7765 "configure" + #include "confdefs.h" + +@@ -7767,5 +7775,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:7770: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:7778: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -7785,7 +7793,7 @@ + + echo $ac_n "checking for in6addr_any""... $ac_c" 1>&6 +-echo "configure:7788: checking for in6addr_any" >&5 ++echo "configure:7796: checking for in6addr_any" >&5 + cat > conftest.$ac_ext <<EOF +-#line 7790 "configure" ++#line 7798 "configure" + #include "confdefs.h" + +@@ -7801,5 +7809,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:7804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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 +@@ -7817,7 +7825,7 @@ + + echo $ac_n "checking for in6addr_loopback""... $ac_c" 1>&6 +-echo "configure:7820: checking for in6addr_loopback" >&5 ++echo "configure:7828: checking for in6addr_loopback" >&5 + cat > conftest.$ac_ext <<EOF +-#line 7822 "configure" ++#line 7830 "configure" + #include "confdefs.h" + +@@ -7833,5 +7841,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:7836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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 +@@ -7849,7 +7857,7 @@ + + 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 ++echo "configure:7860: checking for sin6_scope_id in struct sockaddr_in6" >&5 + cat > conftest.$ac_ext <<EOF +-#line 7854 "configure" ++#line 7862 "configure" + #include "confdefs.h" + +@@ -7864,5 +7872,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:7867: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:7875: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -7879,7 +7887,7 @@ + + echo $ac_n "checking for in6_pktinfo""... $ac_c" 1>&6 +-echo "configure:7882: checking for in6_pktinfo" >&5 ++echo "configure:7890: checking for in6_pktinfo" >&5 + cat > conftest.$ac_ext <<EOF +-#line 7884 "configure" ++#line 7892 "configure" + #include "confdefs.h" + +@@ -7894,5 +7902,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:7897: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:7905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -7949,7 +7957,7 @@ + + echo $ac_n "checking for inet_ntop""... $ac_c" 1>&6 +-echo "configure:7952: checking for inet_ntop" >&5 ++echo "configure:7960: checking for inet_ntop" >&5 + cat > conftest.$ac_ext <<EOF +-#line 7954 "configure" ++#line 7962 "configure" + #include "confdefs.h" + +@@ -7961,5 +7969,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:7964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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 +@@ -7982,5 +7990,5 @@ + + echo $ac_n "checking for inet_pton""... $ac_c" 1>&6 +-echo "configure:7985: checking for inet_pton" >&5 ++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 +@@ -7988,5 +7996,5 @@ + else + cat > conftest.$ac_ext <<EOF +-#line 7991 "configure" ++#line 7999 "configure" + #include "confdefs.h" + +@@ -7998,5 +8006,5 @@ + 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 ++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 +@@ -8016,7 +8024,7 @@ + + echo $ac_n "checking for inet_aton""... $ac_c" 1>&6 +-echo "configure:8019: checking for inet_aton" >&5 ++echo "configure:8027: checking for inet_aton" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8021 "configure" ++#line 8029 "configure" + #include "confdefs.h" + +@@ -8028,5 +8036,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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 +@@ -8061,7 +8069,7 @@ + + 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 ++echo "configure:8072: checking for sa_len in struct sockaddr" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8066 "configure" ++#line 8074 "configure" + #include "confdefs.h" + +@@ -8072,5 +8080,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8075: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8083: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8093,7 +8101,7 @@ + # + echo $ac_n "checking for struct msghdr flavor""... $ac_c" 1>&6 +-echo "configure:8096: checking for struct msghdr flavor" >&5 ++echo "configure:8104: checking for struct msghdr flavor" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8098 "configure" ++#line 8106 "configure" + #include "confdefs.h" + +@@ -8104,5 +8112,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8107: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++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 +@@ -8122,7 +8130,7 @@ + # + echo $ac_n "checking for type in_port_t""... $ac_c" 1>&6 +-echo "configure:8125: checking for type in_port_t" >&5 ++echo "configure:8133: checking for type in_port_t" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8127 "configure" ++#line 8135 "configure" + #include "confdefs.h" + +@@ -8133,5 +8141,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8144: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8151,7 +8159,7 @@ + # + echo $ac_n "checking for struct addrinfo""... $ac_c" 1>&6 +-echo "configure:8154: checking for struct addrinfo" >&5 ++echo "configure:8162: checking for struct addrinfo" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8156 "configure" ++#line 8164 "configure" + #include "confdefs.h" + +@@ -8161,5 +8169,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8164: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8172: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8183,7 +8191,7 @@ + # + echo $ac_n "checking for struct rrsetinfo""... $ac_c" 1>&6 +-echo "configure:8186: checking for struct rrsetinfo" >&5 ++echo "configure:8194: checking for struct rrsetinfo" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8188 "configure" ++#line 8196 "configure" + #include "confdefs.h" + +@@ -8193,5 +8201,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8196: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8204: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8208,7 +8216,7 @@ + + echo $ac_n "checking for int sethostent""... $ac_c" 1>&6 +-echo "configure:8211: checking for int sethostent" >&5 ++echo "configure:8219: checking for int sethostent" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8213 "configure" ++#line 8221 "configure" + #include "confdefs.h" + +@@ -8218,5 +8226,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8233,7 +8241,7 @@ + + echo $ac_n "checking for int endhostent""... $ac_c" 1>&6 +-echo "configure:8236: checking for int endhostent" >&5 ++echo "configure:8244: checking for int endhostent" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8238 "configure" ++#line 8246 "configure" + #include "confdefs.h" + +@@ -8243,5 +8251,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8258,7 +8266,7 @@ + + echo $ac_n "checking for getnetbyaddr(in_addr_t, ...)""... $ac_c" 1>&6 +-echo "configure:8261: checking for getnetbyaddr(in_addr_t, ...)" >&5 ++echo "configure:8269: checking for getnetbyaddr(in_addr_t, ...)" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8263 "configure" ++#line 8271 "configure" + #include "confdefs.h" + +@@ -8269,5 +8277,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8272: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8280: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8284,7 +8292,7 @@ + + echo $ac_n "checking for int setnetent""... $ac_c" 1>&6 +-echo "configure:8287: checking for int setnetent" >&5 ++echo "configure:8295: checking for int setnetent" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8289 "configure" ++#line 8297 "configure" + #include "confdefs.h" + +@@ -8294,5 +8302,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8305: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8309,7 +8317,7 @@ + + echo $ac_n "checking for int endnetent""... $ac_c" 1>&6 +-echo "configure:8312: checking for int endnetent" >&5 ++echo "configure:8320: checking for int endnetent" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8314 "configure" ++#line 8322 "configure" + #include "confdefs.h" + +@@ -8319,5 +8327,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8330: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8334,7 +8342,7 @@ + + 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 ++echo "configure:8345: checking for gethostbyaddr(const void *, size_t, ...)" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8339 "configure" ++#line 8347 "configure" + #include "confdefs.h" + +@@ -8345,5 +8353,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8348: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8356: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8360,7 +8368,7 @@ + + 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 ++echo "configure:8371: checking for h_errno in netdb.h" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8365 "configure" ++#line 8373 "configure" + #include "confdefs.h" + +@@ -8370,5 +8378,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8373: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8381: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8385,10 +8393,10 @@ + + echo $ac_n "checking for getipnodebyname""... $ac_c" 1>&6 +-echo "configure:8388: checking for getipnodebyname" >&5 ++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 8393 "configure" ++#line 8401 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -8413,5 +8421,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -8434,10 +8442,10 @@ + + echo $ac_n "checking for getnameinfo""... $ac_c" 1>&6 +-echo "configure:8437: checking for getnameinfo" >&5 ++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 8442 "configure" ++#line 8450 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -8462,5 +8470,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8465: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -8483,10 +8491,10 @@ + + echo $ac_n "checking for getaddrinfo""... $ac_c" 1>&6 +-echo "configure:8486: checking for getaddrinfo" >&5 ++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 8491 "configure" ++#line 8499 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -8511,5 +8519,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8514: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -8536,10 +8544,10 @@ + + echo $ac_n "checking for gai_strerror""... $ac_c" 1>&6 +-echo "configure:8539: checking for gai_strerror" >&5 ++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 8544 "configure" ++#line 8552 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -8564,5 +8572,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -8594,7 +8602,7 @@ + # + echo $ac_n "checking for interface list sysctl""... $ac_c" 1>&6 +-echo "configure:8597: checking for interface list sysctl" >&5 ++echo "configure:8605: checking for interface list sysctl" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8599 "configure" ++#line 8607 "configure" + #include "confdefs.h" + +@@ -8633,7 +8641,7 @@ + # the function itself. + echo $ac_n "checking for correctly declared strsep()""... $ac_c" 1>&6 +-echo "configure:8636: checking for correctly declared strsep()" >&5 ++echo "configure:8644: checking for correctly declared strsep()" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8638 "configure" ++#line 8646 "configure" + #include "confdefs.h" + #include <string.h> +@@ -8642,5 +8650,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -8654,10 +8662,10 @@ + + echo $ac_n "checking for vsnprintf""... $ac_c" 1>&6 +-echo "configure:8657: checking for vsnprintf" >&5 ++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 8662 "configure" ++#line 8670 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -8682,5 +8690,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -8707,10 +8715,10 @@ + + echo $ac_n "checking for strerror""... $ac_c" 1>&6 +-echo "configure:8710: checking for strerror" >&5 ++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 8715 "configure" ++#line 8723 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -8735,5 +8743,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -8769,5 +8777,5 @@ + # + 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 ++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 +@@ -8775,9 +8783,9 @@ + else + cat > conftest.$ac_ext <<EOF +-#line 8778 "configure" ++#line 8786 "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 ++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 +@@ -8799,10 +8807,10 @@ + # + echo $ac_n "checking for chroot""... $ac_c" 1>&6 +-echo "configure:8802: checking for chroot" >&5 ++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 8807 "configure" ++#line 8815 "configure" + #include "confdefs.h" + /* System header to define __stub macros and hopefully few prototypes, +@@ -8827,5 +8835,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8830: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++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" +@@ -8861,15 +8869,15 @@ + 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 ++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 8869 "configure" ++#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:8874: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++{ (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 +@@ -8905,15 +8913,15 @@ + 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 ++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 8913 "configure" ++#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:8918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++{ (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 +@@ -8946,7 +8954,7 @@ + # + echo $ac_n "checking for type rlim_t""... $ac_c" 1>&6 +-echo "configure:8949: checking for type rlim_t" >&5 ++echo "configure:8957: checking for type rlim_t" >&5 + cat > conftest.$ac_ext <<EOF +-#line 8951 "configure" ++#line 8959 "configure" + #include "confdefs.h" + +@@ -8958,5 +8966,5 @@ + ; return 0; } + EOF +-if { (eval echo configure:8961: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ++if { (eval echo configure:8969: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + echo "$ac_t""yes" 1>&6 +@@ -8969,10 +8977,10 @@ + + echo $ac_n "checking type of rlim_cur""... $ac_c" 1>&6 +-echo "configure:8972: checking type of rlim_cur" >&5 ++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 8977 "configure" ++#line 8985 "configure" + #include "confdefs.h" + +@@ -8982,5 +8990,5 @@ + 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 ++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 +@@ -8995,5 +9003,5 @@ + else + cat > conftest.$ac_ext <<EOF +-#line 8998 "configure" ++#line 9006 "configure" + #include "confdefs.h" + +@@ -9003,5 +9011,5 @@ + 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 ++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 +@@ -9016,5 +9024,5 @@ + else + cat > conftest.$ac_ext <<EOF +-#line 9019 "configure" ++#line 9027 "configure" + #include "confdefs.h" + +@@ -9024,5 +9032,5 @@ + 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 ++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 +@@ -9148,5 +9156,5 @@ + 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 ++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 +@@ -9195,5 +9203,5 @@ + 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 ++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 +@@ -9238,5 +9246,5 @@ + 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 ++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 +@@ -9294,5 +9302,5 @@ + SGMLCATALOG="" + echo $ac_n "checking for catalog""... $ac_c" 1>&6 +-echo "configure:9297: checking for catalog" >&5 ++echo "configure:9305: checking for catalog" >&5 + for d in $sgmltrees + do +@@ -9336,5 +9344,5 @@ + HTMLSTYLE="" + echo $ac_n "checking for html/docbook.dsl""... $ac_c" 1>&6 +-echo "configure:9339: checking for html/docbook.dsl" >&5 ++echo "configure:9347: checking for html/docbook.dsl" >&5 + for d in $stylepath + do +@@ -9357,5 +9365,5 @@ + PRINTSTYLE="" + echo $ac_n "checking for print/docbook.dsl""... $ac_c" 1>&6 +-echo "configure:9360: checking for print/docbook.dsl" >&5 ++echo "configure:9368: checking for print/docbook.dsl" >&5 + for d in $stylepath + do +@@ -9383,5 +9391,5 @@ + 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 ++echo "configure:9394: checking for docbook/dsssl/modular/dtds/decls/xml.dcl" >&5 + for d in $sgmltrees + do +@@ -9409,5 +9417,5 @@ + DOCBOOK2MANSPEC="" + echo $ac_n "checking for docbook2X/docbook2man-spec.pl""... $ac_c" 1>&6 +-echo "configure:9412: checking for docbook2X/docbook2man-spec.pl" >&5 ++echo "configure:9420: checking for docbook2X/docbook2man-spec.pl" >&5 + for d in $sgmltrees + do +@@ -9426,4 +9434,191 @@ + fi + ++ ++ ++# ++# MDN support ++# ++# Check whether --with-mdn or --without-mdn was given. ++if test "${with_mdn+set}" = set; then ++ withval="$with_mdn" ++ use_mdn="$withval" ++else ++ use_mdn="no" ++fi ++ ++case "$use_mdn" in ++yes) ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi ++ ;; ++no) ++ ;; ++*) ++ mdn_path="$use_mdn" ++ ;; ++esac ++ ++iconvinc= ++iconvlib= ++# Check whether --with-libiconv or --without-libiconv was given. ++if test "${with_libiconv+set}" = set; then ++ withval="$with_libiconv" ++ use_libiconv="$withval" ++else ++ use_libiconv="no" ++fi ++ ++case "$use_libiconv" in ++yes) ++ if test X$prefix = XNONE ; then ++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv" ++ else ++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv" ++ fi ++ ;; ++no) ++ iconvlib= ++ ;; ++*) ++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv" ++ ;; ++esac ++ ++# Check whether --with-iconv or --without-iconv was given. ++if test "${with_iconv+set}" = set; then ++ withval="$with_iconv" ++ iconvlib="$withval" ++fi ++ ++case "$iconvlib" in ++no) ++ iconvlib= ++ ;; ++yes) ++ iconvlib=-liconv ++ ;; ++esac ++ ++# Check whether --with-mdnlib or --without-mdnlib was given. ++if test "${with_mdnlib+set}" = set; then ++ withval="$with_mdnlib" ++ mdnlib="$withval" ++else ++ mdnlib="no" ++fi ++ ++if test "$mdnlib" = yes; then ++ { echo "configure: error: You must specify ARG for --with-mdnlib." 1>&2; exit 1; } ++fi ++ ++if test "$use_mdn" != no; then ++ cat >> confdefs.h <<\EOF ++#define WITH_MDN 1 ++EOF ++ ++ STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" ++ if test "$mdnlib" != no; then ++ LIBS="$mdnlib $iconvlib $LIBS" ++ else ++ LIBS="-L$mdn_path/lib -lmdn $iconvlib $LIBS" ++ fi ++fi ++for ac_hdr in locale.h ++do ++ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++echo "configure:9534: 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 9539 "configure" ++#include "confdefs.h" ++#include <$ac_hdr> ++EOF ++ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ++{ (eval echo configure:9544: \"$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:9573: 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 9578 "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:9601: \"$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 + + diff --git a/contrib/idn/mdnkit/patch/bind9/patch.most b/contrib/idn/mdnkit/patch/bind9/patch.most index 8542bf3d..f91863ea 100644 --- a/contrib/idn/mdnkit/patch/bind9/patch.most +++ b/contrib/idn/mdnkit/patch/bind9/patch.most @@ -1,6 +1,8 @@ ---- ./README.mdnkit.orig Wed Jan 24 01:22:44 2001 -+++ ./README.mdnkit Wed Jan 24 01:22:44 2001 -@@ -0,0 +1,110 @@ +--- README.mdnkit.orig Fri Feb 8 23:22:13 2002 ++++ README.mdnkit Tue Feb 12 17:06:01 2002 +@@ -123,2 +123,126 @@ + + ; $Id: bind-9.2.0-patch,v 1.1.2.1 2002/02/08 12:15:13 marka Exp $ + + BIND-9 MDN patch + @@ -10,29 +12,15 @@ +* What is this patch for? + +This patch adds multilingual domain name (MDN) support to BIND-9. -+You'll get multilingualized version of light weight resolver and -+dig/host/nslookup commands. -+ -+ + multilingualized version of light weight resolver -+ The following APIs accept non-ASCII host name encoded in the -+ local codeset (such as Shift JIS, Big5 or ISO8859-1) -+ determined by the application's current locale, and return -+ host names in the local codeset. -+ lwres_gethostbyname -+ lwres_gethostbyname_r -+ lwres_gethostbyname2 -+ lwres_getipnodebyname -+ lwres_getaddrinfo -+ lwres_gethostbyaddr -+ lwres_gethostbyaddr_r -+ lwres_getipnodebyaddr -+ lwres_getnameinfo ++You'll get multilingualized version of dig/host/nslookup commands. + + + mulltilingualized dig/host/nslookup + dig/host/nslookup accepts non-ASCII domain names in the local -+ codeset. 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. ++ 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 @@ -47,25 +35,53 @@ +Run `configure' in the top directory. See `README' for the +configuration options. + -+This patch adds the following 3 options to `configure'. You should ++This patch adds the following 4 options to `configure'. You should +at least specify `--with-mdn' option to enable MDN support. + -+ --with-mdn[=PREFIX] -+ To enable MDN support, you have to specify `--with-mdn' -+ option. If you specified installation prefix other than -+ `/usr/local' (which is the default) when conifguring mDNkit, -+ also specify the prefix, like `--with-mdn=/usr/local/mdnkit'. ++ --with-mdn[=MDN_PREFIX] ++ To enable MDN support, you have to specify `--with-mdn' option. ++ The argument MDN_PREFIX is the install prefix of mDNkit. If ++ MDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX') ++ is assumed. ++ ++ --with-libiconv[=LIBICONV_PREFIX] ++ Specify this option if mDNkit you have installed links GNU ++ libiconv. The argument LIBICONV_PREFIX is install prefix of ++ GNU libiconv. If the argument is omitted, PREFIX (derived ++ from `--prefix=PREFIX') is assumed. ++ ++ `--with-libiconv' is shorthand option for GNU libiconv. ++ ++ --with-libiconv=/usr/local ++ ++ This is equivalent to: ++ ++ --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv' + -+ --with-iconv=LIBSPEC ++ `--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. `LIBSPEC' is the -+ argument(s) to `cc' or `ld' to link the library, for example, -+ `--with-iconv="-L/usr/local/lib -liconv"'. ++ library containing iconv() with this option. `ICONV_LIBSPEC' ++ is the argument(s) to `cc' or `ld' to link the library, for ++ example, `--with-iconv="-L/usr/local/lib -liconv"'. + You don't need to specify the header file directory for "iconv.h" + to the compiler, as it isn't included directly by bind-9 with + this patch. + -+ --with-mdnlib=LIBSPEC ++ --with-mdnlib=MDN_LIBSPEC + With this option, you can explicitly specify the argument(s) + to `cc' or `ld' to link the mDNkit's library, `libmdn'. If + this option is not specified, `-L${PREFIX}/lib -lmdn' is @@ -94,11 +110,11 @@ +To handle multilingual domain names, you have to specify the +properties like: + + name encoding used in DNS protocol data -+ + normalization schemes -+These properties are specified by the mDNkit's resolver configuration -+file, "mdnres.conf". You have to create and set up the file properly. -+The pathname of the file and contents are described in the manual -+"mdnres.conf". ++ + normalization (NAMEPREP) schemes ++These properties are specified by the mDNkit's configuration file, ++"mdn.conf". You have to create and set up the file properly. The ++pathname of the file and contents are described in the manual ++"mdn.conf". + + +* Contact information @@ -110,51 +126,49 @@ +mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively. + + -+; $Id: README.mdnkit,v 1.5 2000/10/18 04:54:57 ishisone Exp $ ---- ./acconfig.h.orig Wed Jan 24 00:53:00 2001 -+++ ./acconfig.h Wed Jan 24 01:22:44 2001 -@@ -116,4 +116,7 @@ - #endif /* SHUTUP_STDARG_CAST && __GNUC__ */ - -+/* define if mDNkit support is to be included. */ -+#undef WITH_MDN -+ - /* define if the system has a random number generating device */ - #undef PATH_RANDOMDEV ---- ./config.h.in.orig Wed Jan 24 00:53:01 2001 -+++ ./config.h.in Wed Jan 24 01:22:44 2001 -@@ -133,4 +133,10 @@ - #undef HAVE_PTHREAD_ATTR_GETSTACKSIZE ++; $Id: bind-9.2.0-patch,v 1.1.2.1 2002/02/08 12:15:13 marka Exp $ +--- config.h.in.orig Tue Feb 12 11:41:27 2002 ++++ config.h.in Tue Feb 12 17:06:01 2002 +@@ -142,4 +142,7 @@ + #undef HAVE_STRERROR -+/* define if mDNkit support is to be included. */ -+#undef WITH_MDN -+ +/* Define if you have the setlocale function. */ +#undef HAVE_SETLOCALE + - /* Define if you have the <fcntl.h> header file. */ - #undef HAVE_FCNTL_H -@@ -141,4 +147,7 @@ - /* Define if you have the <linux/prctl.h> header file. */ - #undef HAVE_LINUX_PRCTL_H -+ + /* Define if you have the <dlfcn.h> header file. */ + #undef HAVE_DLFCN_H +@@ -151,4 +154,7 @@ + #undef HAVE_LINUX_CAPABILITY_H + +/* Define if you have the <locale.h> header file. */ +#undef HAVE_LOCALE_H - - /* Define if you have the <sys/sockio.h> header file. */ ---- ./configure.in.orig Wed Jan 24 01:12:20 2001 -+++ ./configure.in Wed Jan 24 01:22:44 2001 -@@ -1324,4 +1324,52 @@ ++ + /* Define if you have the <sys/prctl.h> header file. */ + #undef HAVE_SYS_PRCTL_H +@@ -177,2 +183,6 @@ + /* Define if you have the socket library (-lsocket). */ + #undef HAVE_LIBSOCKET ++ ++/* define if mDNkit support is to be included. */ ++#undef WITH_MDN ++ +--- configure.in.orig Tue Feb 12 11:42:15 2002 ++++ configure.in Tue Feb 12 17:06:01 2002 +@@ -1615,4 +1615,77 @@ # +# MDN support +# +AC_ARG_WITH(mdn, -+ [ --with-mdn[=PREFIX] enable MDN support using mDNkit [default prefix /usr/local]], ++ [ --with-mdn[=MPREFIX] enable MDN support using mDNkit [default PREFIX]], + use_mdn="$withval", use_mdn="no") +case "$use_mdn" in +yes) -+ mdn_path=/usr/local ++ if test X$prefix = XNONE ; then ++ mdn_path=/usr/local ++ else ++ mdn_path=$prefix ++ fi + ;; +no) + ;; @@ -163,16 +177,37 @@ + ;; +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", iconvlib="no") ++ iconvlib="$withval") +case "$iconvlib" in +no) -+ iconvlib= -+ ;; ++ iconvlib= ++ ;; +yes) -+ iconvlib=-liconv -+ ;; ++ iconvlib=-liconv ++ ;; +esac + +AC_ARG_WITH(mdnlib, @@ -183,7 +218,7 @@ +fi + +if test "$use_mdn" != no; then -+ AC_DEFINE(WITH_MDN) ++ AC_DEFINE(WITH_MDN, 1, [define if mDNkit support is to be included.]) + STD_CINCLUDES="$STD_CINCLUDES -I$mdn_path/include" + if test "$mdnlib" != no; then + LIBS="$mdnlib $iconvlib $LIBS" @@ -197,1173 +232,70 @@ +# # Substitutions # ---- ./lib/dns/config/confctx.c.orig Wed Jan 24 00:55:34 2001 -+++ ./lib/dns/config/confctx.c Wed Jan 24 01:22:44 2001 -@@ -1030,4 +1030,7 @@ - PRINT_AS_BOOLEAN(maintain_ixfr_base, "maintain-ixfr-base"); - PRINT_AS_BOOLEAN(has_old_clients, "has-old-clients"); -+#ifdef WITH_MDN -+ PRINT_AS_BOOLEAN(allow_utf8, "allow-utf8"); -+#endif - PRINT_AS_BOOLEAN(auth_nx_domain, "auth-nxdomain"); - PRINT_AS_BOOLEAN(multiple_cnames, "multiple-cnames"); -@@ -1565,4 +1568,7 @@ - opts->maintain_ixfr_base = NULL; - opts->has_old_clients = NULL; -+#ifdef WITH_MDN -+ opts->allow_utf8 = NULL; -+#endif - opts->auth_nx_domain = NULL; - opts->multiple_cnames = NULL; -@@ -1680,4 +1686,7 @@ - FREEFIELD(maintain_ixfr_base); - FREEFIELD(has_old_clients); -+#ifdef WITH_MDN -+ FREEFIELD(allow_utf8); -+#endif - FREEFIELD(auth_nx_domain); - FREEFIELD(multiple_cnames); -@@ -1858,4 +1867,7 @@ - BOOL_FUNCS(maintainixfrbase, maintain_ixfr_base) - BOOL_FUNCS(hasoldclients, has_old_clients) -+#ifdef WITH_MDN -+BOOL_FUNCS(allowutf8, allow_utf8) -+#endif - BOOL_FUNCS(authnxdomain, auth_nx_domain) - BOOL_FUNCS(multiplecnames, multiple_cnames) ---- ./lib/dns/config/confparser.y.orig Wed Jan 24 01:12:59 2001 -+++ ./lib/dns/config/confparser.y Wed Jan 24 01:22:44 2001 -@@ -275,4 +275,5 @@ - %token L_ALLOW_UPDATE - %token L_ALLOW_UPDATE_FORWARDING -+%token L_ALLOW_UTF8 - %token L_ALLOW_V6_SYNTHESIS - %token L_ALSO_NOTIFY -@@ -1740,4 +1741,19 @@ - } +--- bin/dig/dig.1.orig Tue Feb 12 11:42:17 2002 ++++ bin/dig/dig.1 Tue Feb 12 17:06:01 2002 +@@ -74,5 +74,5 @@ + .TP + \fBtype\fR +-indicates what type of query is required \(em ++indicates what type of query is required + ANY, A, MX, SIG, etc. + \fItype\fR can be any valid query type. If no +@@ -350,4 +350,15 @@ + will not print the initial query when it looks up the NS records for + isc.org. ++.SH "MDN SUPPORT" ++.PP ++If \fBdig\fR has been built with mdn support, it can ++accept and display non-ASCII domain names. ++\fBdig\fR appropriately converts character encoding of ++domain name before sending a request to DNS server or displaying a ++reply from the server. ++If you'd like to turn off the MDN support for some reason, defines ++the \fBMDN_DISABLE\fR environment variable. ++The MDN support is disabled if the the variable is set when ++\fBdig\fR runs. + .SH "FILES" + .PP +--- bin/dig/dig.c.orig Tue Feb 12 11:42:22 2002 ++++ bin/dig/dig.c Tue Feb 12 17:06:01 2002 +@@ -1308,4 +1308,9 @@ + ISC_LIST_APPEND(lookup_list, lookup, link); } -+ | L_ALLOW_UTF8 yea_or_nay -+ { -+#ifdef WITH_MDN -+ tmpres = dns_c_ctx_setallowutf8(currcfg, $2); -+ if (tmpres == ISC_R_EXISTS) { -+ parser_error(ISC_FALSE, -+ "cannot redefine allow-utf8"); -+ YYABORT; -+ } -+#else -+ parser_error(ISC_FALSE, "must be configured with MDN" -+ "to use allow-utf8"); -+ YYABORT; -+#endif -+ } - | L_ADDITIONAL_DATA additional_data - { -@@ -6122,4 +6138,7 @@ - int yaccval; - }; -+#ifdef WITH_MDN -+ { "allow-utf8", L_ALLOW_UTF8 }, -+#endif - - static struct token keyword_tokens [] = { ---- ./lib/dns/include/dns/confctx.h.orig Wed Jan 24 01:02:45 2001 -+++ ./lib/dns/include/dns/confctx.h Wed Jan 24 01:22:44 2001 -@@ -185,4 +185,7 @@ - isc_sockaddr_t *transfer_source_v6; - isc_sockaddr_t *query_source; -+#ifdef WITH_MDN -+ isc_boolean_t *allow_utf8; -+#endif - isc_sockaddr_t *query_source_v6; - -@@ -631,4 +634,11 @@ - isc_result_t dns_c_ctx_gettreatcrasspace(dns_c_ctx_t *cfg, - isc_boolean_t *retval); -+#ifdef WITH_MDN -+isc_result_t dns_c_ctx_setallowutf8(dns_c_ctx_t *cfg, -+ isc_boolean_t newval); -+isc_result_t dns_c_ctx_getallowutf8(dns_c_ctx_t *cfg, -+ isc_boolean_t *retval); -+isc_result_t dns_c_ctx_unsetallowutf8(dns_c_ctx_t *cfg); -+#endif - - ---- ./lib/dns/include/dns/name.h.orig Wed Jan 24 01:03:27 2001 -+++ ./lib/dns/include/dns/name.h Wed Jan 24 01:22:44 2001 -@@ -219,4 +219,15 @@ - #define DNS_NAME_MAXWIRE 255 - -+#ifdef WITH_MDN -+/* -+ * Text output filter procedure. -+ * 'target' is the buffer to be converted. The region to be converted -+ * is from 'buffer'->base + 'used_org' to the end of the used region. -+ */ -+typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target, -+ unsigned int used_org, -+ isc_boolean_t absolute); -+#endif -+ - /*** - *** Initialization -@@ -1217,4 +1228,24 @@ - * - */ -+ -+#ifdef WITH_MDN -+void -+dns_name_allowutf8(isc_boolean_t allowutf8); -+/* -+ * If 'allowutf8' is true, UTF-8 characters are not translated into -+ * backslash escape format (\DDD) by dns_name_totext(). -+ * -+ * XXX: -+ * Setting this modifies the global state. Maybe there should be -+ * a way to set this for each name. -+ */ -+ -+void -+dns_name_settotextfilter(dns_name_totextfilter_t proc); -+/* -+ * Call 'proc' at the end of dns_name_totext. -+ */ -+ -+#endif /* WITH_MDN */ - - #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1) ---- ./lib/dns/name.c.orig Wed Jan 24 00:59:40 2001 -+++ ./lib/dns/name.c Wed Jan 24 01:22:44 2001 -@@ -32,4 +32,8 @@ - #include <dns/result.h> - -+#ifdef WITH_MDN -+#include <mdn/utf8.h> -+#endif -+ - #define VALID_NAME(n) ISC_MAGIC_VALID(n, DNS_NAME_MAGIC) - -@@ -199,4 +203,17 @@ - dns_name_t *set_name); - -+#ifdef WITH_MDN -+/* -+ * If this flag is true, dns_name_totext() copies UTF-8 characters -+ * as is (ie not backslash-escaped form). -+ */ -+static isc_boolean_t allow_utf8 = ISC_FALSE; -+ -+/* -+ * dns_name_t to text post-conversion procedure. -+ */ -+static dns_name_totextfilter_t totext_filter_proc = NULL; -+#endif -+ - static void - compact(dns_name_t *name, unsigned char *offsets); -@@ -1683,4 +1700,8 @@ - isc_boolean_t saw_root = ISC_FALSE; - char num[4]; -+#ifdef WITH_MDN -+ unsigned int oused = target->used; -+ unsigned int u8len; -+#endif - - /* -@@ -1778,4 +1799,18 @@ - trem--; - nlen--; -+#ifdef WITH_MDN -+ } else if (c >= 0x80 && -+ allow_utf8 && -+ (u8len = -+ mdn_utf8_isvalidchar(ndata)) -+ > 0 && -+ u8len <= trem) { -+ memcpy(tdata, ndata, u8len); -+ ndata += u8len; -+ tdata += u8len; -+ trem -= u8len; -+ nlen -= u8len; -+ count -= u8len - 1; -+#endif - } else { - if (trem < 4) -@@ -1859,4 +1894,8 @@ - isc_buffer_add(target, tlen - trem); - -+#ifdef WITH_MDN -+ if (totext_filter_proc != NULL) -+ return ((*totext_filter_proc)(target, oused, saw_root)); -+#endif - return (ISC_R_SUCCESS); - } -@@ -3137,4 +3176,16 @@ - dns_offsets_t odata; - -+ -+#ifdef WITH_MDN -+void -+dns_name_allowutf8(isc_boolean_t allowutf8) { -+ allow_utf8 = allowutf8; -+} -+ -+void -+dns_name_settotextfilter(dns_name_totextfilter_t proc) { -+ totext_filter_proc = proc; -+} -+#endif - /* - * Make dest a copy of source. ---- ./lib/lwres/getaddrinfo.c.orig Wed Jan 24 01:11:09 2001 -+++ ./lib/lwres/getaddrinfo.c Wed Jan 24 01:22:44 2001 -@@ -54,4 +54,12 @@ - #endif - -+#ifdef WITH_MDN /* Add 'encodeflag' parameter to 3 functions. */ -+static int add_ipv4(const char *hostname, int flags, struct addrinfo **aip, -+ int socktype, int port, int encodeflg); -+static int add_ipv6(const char *hostname, int flags, struct addrinfo **aip, -+ int socktype, int port, int encodeflg); -+static void set_order(int, int (**)(const char *, int, struct addrinfo **, -+ int, int, int)); -+#else - static int add_ipv4(const char *hostname, int flags, struct addrinfo **aip, - int socktype, int port); -@@ -60,4 +68,5 @@ - static void set_order(int, int (**)(const char *, int, struct addrinfo **, - int, int)); -+#endif /* WITH_MDN */ - - #define FOUND_IPV4 0x1 -@@ -67,7 +76,22 @@ - #define ISC_AI_MASK (AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST) - -+#ifdef WITH_MDN - int - lwres_getaddrinfo(const char *hostname, const char *servname, -+ const struct addrinfo *hints, struct addrinfo **res) -+{ -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getaddrinfo_enc(hostname, servname, hints, res, 0)); -+} -+#endif /* WITH_MDN */ -+ -+int -+#ifdef WITH_MDN -+lwres_getaddrinfo_enc(const char *hostname, const char *servname, -+ const struct addrinfo *hints, struct addrinfo **res, int encodeflg) -+#else -+lwres_getaddrinfo(const char *hostname, const char *servname, - const struct addrinfo *hints, struct addrinfo **res) -+#endif /* WITH_MDN */ - { - struct servent *sp; -@@ -76,6 +100,11 @@ - struct addrinfo *ai, *ai_list; - int port, err, i; -+#ifdef WITH_MDN -+ int (*net_order[FOUND_MAX+1])(const char *, int, struct addrinfo **, -+ int, int, int); -+#else - int (*net_order[FOUND_MAX+1])(const char *, int, struct addrinfo **, - int, int); -+#endif /* WITH_MDN */ - - if (hostname == NULL && servname == NULL) -@@ -354,5 +383,9 @@ - break; - err = (net_order[i])(hostname, flags, &ai_list, -+#ifdef WITH_MDN -+ socktype, port, encodeflg); -+#else - socktype, port); -+#endif - if (err != 0) - return (err); -@@ -393,6 +426,11 @@ - - static void -+#ifdef WITH_MDN -+set_order(int family, int (**net_order)(const char *, int, struct addrinfo **, -+ int, int, int)) -+#else - set_order(int family, int (**net_order)(const char *, int, struct addrinfo **, - int, int)) -+#endif /* WITH_MDN */ - { - char *order, *tok; -@@ -452,6 +490,11 @@ - - static int -+#ifdef WITH_MDN -+add_ipv4(const char *hostname, int flags, struct addrinfo **aip, -+ int socktype, int port, int encodeflg) -+#else - add_ipv4(const char *hostname, int flags, struct addrinfo **aip, - int socktype, int port) -+#endif /* WITH_MDN */ - { - struct addrinfo *ai; -@@ -477,6 +520,12 @@ - SIN(ai->ai_addr)->sin_port = port; - memcpy(&SIN(ai->ai_addr)->sin_addr, v4_loop, 4); -+#ifdef WITH_MDN -+ } else if (lwres_getaddrsbyname_enc(lwrctx, hostname, -+ LWRES_ADDRTYPE_V4, -+ &by, encodeflg) == 0) { -+#else - } else if (lwres_getaddrsbyname(lwrctx, hostname, - LWRES_ADDRTYPE_V4, &by) == 0) { -+#endif /* WITH_MDN */ - addr = LWRES_LIST_HEAD(by->addrs); - while (addr != NULL) { -@@ -512,6 +561,11 @@ - - static int -+#ifdef WITH_MDN -+add_ipv6(const char *hostname, int flags, struct addrinfo **aip, -+ int socktype, int port, int encodeflg) -+#else - add_ipv6(const char *hostname, int flags, struct addrinfo **aip, - int socktype, int port) -+#endif /* WITH_MDN */ - { - struct addrinfo *ai; -@@ -538,6 +592,12 @@ - SIN6(ai->ai_addr)->sin6_port = port; - memcpy(&SIN6(ai->ai_addr)->sin6_addr, v6_loop, 16); -+#ifdef WITH_MDN -+ } else if (lwres_getaddrsbyname_enc(lwrctx, hostname, -+ LWRES_ADDRTYPE_V6, -+ &by, encodeflg) == 0) { -+#else - } else if (lwres_getaddrsbyname(lwrctx, hostname, - LWRES_ADDRTYPE_V6, &by) == 0) { -+#endif /* WITH_MDN */ - addr = LWRES_LIST_HEAD(by->addrs); - while (addr != NULL) { ---- ./lib/lwres/gethost.c.orig Wed Jan 24 01:11:10 2001 -+++ ./lib/lwres/gethost.c Wed Jan 24 01:22:44 2001 -@@ -26,4 +26,7 @@ - #include <string.h> - -+#ifdef WITH_MDN -+#include <lwres/lwres.h> -+#endif /* WITH_MDN */ - #include <lwres/netdb.h> - -@@ -37,30 +40,81 @@ - static int copytobuf(struct hostent *, struct hostent *, char *, int); - -+#ifdef WITH_MDN - struct hostent * - lwres_gethostbyname(const char *name) { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyname_enc(name, LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ -+struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyname_enc(const char *name, int encodeflg) { -+#else -+lwres_gethostbyname(const char *name) { -+#endif /* WITH_MDN */ - - if (he != NULL) - lwres_freehostent(he); - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyname_enc(name, AF_INET, 0, &lwres_h_errno, -+ encodeflg); -+#else - he = lwres_getipnodebyname(name, AF_INET, 0, &lwres_h_errno); -+#endif /* WITH_MDN */ - return (he); - } - -+#ifdef WITH_MDN - struct hostent * - lwres_gethostbyname2(const char *name, int af) { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyname2_enc(name, af, LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ -+struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyname2_enc(const char *name, int af, int encodeflg) { -+#else -+lwres_gethostbyname2(const char *name, int af) { -+#endif /* WITH_MDN */ - if (he != NULL) - lwres_freehostent(he); - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyname_enc(name, af, 0, &lwres_h_errno, encodeflg); -+#else - he = lwres_getipnodebyname(name, af, 0, &lwres_h_errno); -+#endif /* WITH_MDN */ - return (he); - } - -+#ifdef WITH_MDN -+struct hostent * -+lwres_gethostbyaddr(const char *addr, int len, int type) { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyaddr_enc(addr, len, type, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ - struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyaddr_enc(const char *addr, int len, int type, int encodeflg) { -+#else - lwres_gethostbyaddr(const char *addr, int len, int type) { -+#endif /* WITH_MDN */ - - if (he != NULL) - lwres_freehostent(he); - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyaddr_enc(addr, len, type, &lwres_h_errno, -+ encodeflg); -+#else - he = lwres_getipnodebyaddr(addr, len, type, &lwres_h_errno); -+#endif /* WITH_MDN */ - return (he); - } -@@ -89,12 +143,32 @@ - } - -+#ifdef WITH_MDN - struct hostent * - lwres_gethostbyname_r(const char *name, struct hostent *resbuf, - char *buf, int buflen, int *error) - { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyname_r_enc(name, resbuf, buf, buflen, error, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ -+struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyname_r_enc(const char *name, struct hostent *resbuf, -+ char *buf, int buflen, int *error, int encodeflg) -+#else -+lwres_gethostbyname_r(const char *name, struct hostent *resbuf, -+ char *buf, int buflen, int *error) -+#endif /* WITH_MDN */ -+{ - struct hostent *he; - int res; - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyname_enc(name, AF_INET, 0, error, encodeflg); -+#else - he = lwres_getipnodebyname(name, AF_INET, 0, error); -+#endif /* WITH_MDN */ - if (he == NULL) - return (NULL); -@@ -108,13 +182,35 @@ - } - -+#ifdef WITH_MDN -+struct hostent * -+lwres_gethostbyaddr_r(const char *addr, int len, int type, -+ struct hostent *resbuf, char *buf, int buflen, -+ int *error) -+{ -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_gethostbyaddr_r_enc(addr, len, type, resbuf, buf, buflen, -+ error, LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+ - struct hostent * -+#ifdef WITH_MDN -+lwres_gethostbyaddr_r_enc(const char *addr, int len, int type, -+ struct hostent *resbuf, char *buf, int buflen, -+ int *error, int encodeflg) -+#else - lwres_gethostbyaddr_r(const char *addr, int len, int type, - struct hostent *resbuf, char *buf, int buflen, - int *error) -+#endif /* WITH_MDN */ - { - struct hostent *he; - int res; - -+#ifdef WITH_MDN -+ he = lwres_getipnodebyaddr_enc(addr, len, type, error, encodeflg); -+#else - he = lwres_getipnodebyaddr(addr, len, type, error); -+#endif /* WITH_MDN */ - if (he == NULL) - return (NULL); ---- ./lib/lwres/getipnode.c.orig Wed Jan 24 01:11:14 2001 -+++ ./lib/lwres/getipnode.c Wed Jan 24 01:22:44 2001 -@@ -99,6 +99,22 @@ - */ - -+#ifdef WITH_MDN - struct hostent * -+lwres_getipnodebyname(const char *name, int af, int flags, int *error_num) -+{ -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getipnodebyname_enc(name, af, flags, error_num, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ + -+struct hostent * +#ifdef WITH_MDN -+lwres_getipnodebyname_enc(const char *name, int af, int flags, int *error_num, -+ int encodeflg) -+{ -+#else - lwres_getipnodebyname(const char *name, int af, int flags, int *error_num) { -+#endif /* WITH_MDN */ - int have_v4 = 1, have_v6 = 1; - struct in_addr in4; -@@ -171,5 +187,10 @@ - if (have_v6 && af == AF_INET6) { - -+#ifdef WITH_MDN -+ n = lwres_getaddrsbyname_enc(lwrctx, name, LWRES_ADDRTYPE_V6, -+ &by, encodeflg); -+#else - n = lwres_getaddrsbyname(lwrctx, name, LWRES_ADDRTYPE_V6, &by); -+#endif /* WITH_MDN */ - if (n == 0) { - he1 = hostfromname(by, AF_INET6); -@@ -188,5 +209,10 @@ - (af == AF_INET6 && (flags & AI_V4MAPPED) != 0 && - (he1 == NULL || (flags & AI_ALL) != 0)))) { -+#ifdef WITH_MDN -+ n = lwres_getaddrsbyname_enc(lwrctx, name, LWRES_ADDRTYPE_V4, -+ &by, encodeflg); -+#else - n = lwres_getaddrsbyname(lwrctx, name, LWRES_ADDRTYPE_V4, &by); -+#endif /* WITH_MDN */ - if (n == 0) { - he2 = hostfromname(by, AF_INET); -@@ -220,6 +246,20 @@ - } - -+#ifdef WITH_MDN -+struct hostent * -+lwres_getipnodebyaddr(const void *src, size_t len, int af, int *error_num) { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getipnodebyaddr_enc(src, len, af, error_num, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ - struct hostent * -+#ifdef WITH_MDN -+lwres_getipnodebyaddr_enc(const void *src, size_t len, int af, int *error_num, -+ int encodeflg) -+{ -+#else - lwres_getipnodebyaddr(const void *src, size_t len, int af, int *error_num) { -+#endif /* WITH_MDN */ - struct hostent *he1, *he2; - lwres_context_t *lwrctx = NULL; -@@ -282,6 +322,12 @@ - (void) lwres_conf_parse(lwrctx, lwres_resolv_conf); - if (n == LWRES_R_SUCCESS) -+#ifdef WITH_MDN -+ n = lwres_getnamebyaddr_enc(lwrctx, LWRES_ADDRTYPE_V4, -+ INADDRSZ, cp, &by, -+ encodeflg); -+#else - n = lwres_getnamebyaddr(lwrctx, LWRES_ADDRTYPE_V4, - INADDRSZ, cp, &by); -+#endif /* WITH_MDN */ - if (n != LWRES_R_SUCCESS) { - lwres_conf_clear(lwrctx); -@@ -326,6 +372,11 @@ - (void) lwres_conf_parse(lwrctx, lwres_resolv_conf); - if (n == LWRES_R_SUCCESS) -+#ifdef WITH_MDN -+ n = lwres_getnamebyaddr_enc(lwrctx, LWRES_ADDRTYPE_V6, -+ IN6ADDRSZ, src, &by, encodeflg); -+#else - n = lwres_getnamebyaddr(lwrctx, LWRES_ADDRTYPE_V6, IN6ADDRSZ, - src, &by); -+#endif /* WITH_MDN */ - if (n != 0) { - *error_num = HOST_NOT_FOUND; ---- ./lib/lwres/getnameinfo.c.orig Wed Jan 24 01:11:15 2001 -+++ ./lib/lwres/getnameinfo.c Wed Jan 24 01:22:44 2001 -@@ -106,8 +106,24 @@ - } while (0) - -+#ifdef WITH_MDN - int - lwres_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, - size_t hostlen, char *serv, size_t servlen, int flags) - { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getnameinfo_enc(sa, salen, host, hostlen, serv, servlen, -+ flags, LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ -+int -+#ifdef WITH_MDN -+lwres_getnameinfo_enc(const struct sockaddr *sa, size_t salen, char *host, -+ size_t hostlen, char *serv, size_t servlen, int flags, -+ int encodeflg) -+#else -+lwres_getnameinfo(const struct sockaddr *sa, size_t salen, char *host, -+ size_t hostlen, char *serv, size_t servlen, int flags) -+#endif /* WITH_MDN */ -+{ - struct afd *afd; - struct servent *sp; -@@ -259,6 +275,12 @@ - - if (n == 0) -+#ifdef WITH_MDN -+ n = lwres_getnamebyaddr_enc(lwrctx, lwf, -+ afd->a_addrlen, addr, &by, -+ encodeflg); -+#else - n = lwres_getnamebyaddr(lwrctx, lwf, afd->a_addrlen, - addr, &by); -+#endif /* WITH_MDN */ - if (n == 0) { - if (flags & NI_NOFQDN) { ---- ./lib/lwres/include/lwres/lwres.h.orig Wed Jan 24 01:10:57 2001 -+++ ./lib/lwres/include/lwres/lwres.h Wed Jan 24 01:22:44 2001 -@@ -27,4 +27,7 @@ - #include <lwres/list.h> - #include <lwres/lwpacket.h> -+#ifdef WITH_MDN -+#include <mdn/resconf.h> -+#endif /* WITH_MDN */ - - /* -@@ -247,4 +250,7 @@ - lwres_uint8_t ndots; /* set to n in 'options ndots:n' */ - lwres_uint8_t no_tld_query; /* non-zero if 'options no_tld_query' */ -+#ifdef WITH_MDN -+ mdn_resconf_t mdnctx; /* structure for mdn configuration */ -+#endif /* WITH_MDN */ - } lwres_conf_t; - -@@ -255,4 +261,10 @@ - #define LWRES_MAX_ADDRS 64 /* max # of addrs */ - -+#ifdef WITH_MDN -+/* These are used for specifying encoding of the domain names */ -+#define LWRES_ENCODING_LOCAL 0 /* local encoding */ -+#define LWRES_ENCODING_UCS 1 /* UTF-8 encoding */ -+#endif /* WITH_MDN */ -+ - LWRES_LANG_BEGINDECLS - -@@ -264,4 +276,30 @@ - extern const char *lwres_resolv_conf; - -+#ifdef WITH_MDN -+/* -+ * Forward declarations -+ */ -+struct addrinfo; -+struct sockaddr; -+ -+int lwres_getaddrinfo_enc(const char *, const char *, -+ const struct addrinfo *, -+ struct addrinfo **, -+ int encodeflg); -+int lwres_getnameinfo_enc(const struct sockaddr *, size_t, char *, -+ size_t, char *, size_t, int, int); -+struct hostent *lwres_gethostbyaddr_enc(const char *, int, int, int); -+struct hostent *lwres_gethostbyname_enc(const char *, int); -+struct hostent *lwres_gethostbyname2_enc(const char *, int, int); -+struct hostent *lwres_getipnodebyname_enc(const char *, int, int, int *, int); -+struct hostent *lwres_getipnodebyaddr_enc(const void *, size_t, int, int *, -+ int); -+struct hostent *lwres_gethostbyaddr_r_enc(const char *, int, int, -+ struct hostent *, char *, int, -+ int *, int); -+struct hostent *lwres_gethostbyname_r_enc(const char *, struct hostent *, -+ char *, int, int *, int); -+#endif /* WITH_MDN */ -+ - lwres_result_t - lwres_gabnrequest_render(lwres_context_t *ctx, lwres_gabnrequest_t *req, -@@ -277,7 +315,13 @@ - - lwres_result_t -+#ifdef WITH_MDN -+lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, -+ lwres_lwpacket_t *pkt, -+ lwres_gabnresponse_t **structp, int encodeflg); -+#else - lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, - lwres_lwpacket_t *pkt, - lwres_gabnresponse_t **structp); -+#endif /* WITH_MDN */ - - void -@@ -332,8 +376,15 @@ - lwres_lwpacket_t *pkt, lwres_gnbarequest_t **structp); - -+#ifdef WITH_MDN -+lwres_result_t -+lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, -+ lwres_lwpacket_t *pkt, -+ lwres_gnbaresponse_t **structp, int encodeflg); -+#else - lwres_result_t - lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, - lwres_lwpacket_t *pkt, - lwres_gnbaresponse_t **structp); -+#endif /* WITH_MDN */ - - void -@@ -570,4 +621,10 @@ - lwres_getaddrsbyname(lwres_context_t *ctx, const char *name, - lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp); -+#ifdef WITH_MDN -+lwres_result_t -+lwres_getaddrsbyname_enc(lwres_context_t *ctx, const char *name, -+ lwres_uint32_t addrtypes, -+ lwres_gabnresponse_t **structp, int encodeflg); -+#endif /* WITH_MDN */ - - lwres_result_t -@@ -575,4 +632,10 @@ - lwres_uint16_t addrlen, const unsigned char *addr, - lwres_gnbaresponse_t **structp); -+#ifdef WITH_MDN -+lwres_result_t -+lwres_getnamebyaddr_enc(lwres_context_t *ctx, lwres_uint32_t addrtype, -+ lwres_uint16_t addrlen, const unsigned char *addr, -+ lwres_gnbaresponse_t **structp, int encodeflg); -+#endif /* WITH_MDN */ - - lwres_result_t -@@ -580,4 +643,9 @@ - lwres_uint16_t rdclass, lwres_uint16_t rdtype, - lwres_uint32_t flags, lwres_grbnresponse_t **structp); -+ -+#ifdef WITH_MDN -+lwres_result_t -+lwres_result_frommdn(mdn_result_t r); ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; +#endif - - LWRES_LANG_ENDDECLS ---- ./lib/lwres/lwconfig.c.orig Wed Jan 24 01:11:20 2001 -+++ ./lib/lwres/lwconfig.c Wed Jan 24 01:22:45 2001 -@@ -56,4 +56,7 @@ - #include <lwres/net.h> - #include <lwres/result.h> -+#ifdef WITH_MDN -+#include <mdn/result.h> -+#endif /* WITH_MDN */ - - #include "assert_p.h" -@@ -241,4 +244,13 @@ - lwres_resetaddr(&confdata->sortlist[i].mask); - } -+#ifdef WITH_MDN -+ /* -+ * Initialize the context for MDN. -+ */ -+ confdata->mdnctx = NULL; -+ if (mdn_resconf_initialize() == mdn_success) { -+ (void)mdn_resconf_create(&confdata->mdnctx); -+ } -+#endif /* WITH_MDN */ - } - -@@ -606,4 +618,9 @@ - fclose(fp); - -+#ifdef WITH_MDN -+ /* Read mdn configuration file. */ -+ if (confdata->mdnctx != NULL) -+ (void)mdn_resconf_loadfile(confdata->mdnctx, NULL); -+#endif - return (ret); } ---- ./lib/lwres/lwres_gabn.c.orig Wed Jan 24 01:11:25 2001 -+++ ./lib/lwres/lwres_gabn.c Wed Jan 24 01:22:45 2001 -@@ -28,4 +28,7 @@ - #include <lwres/lwres.h> - #include <lwres/result.h> -+#ifdef WITH_MDN -+#include <mdn/res.h> -+#endif /* WITH_MDN */ - #include "context_p.h" -@@ -245,6 +248,12 @@ - - lwres_result_t -+#ifdef WITH_MDN -+lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, -+ lwres_lwpacket_t *pkt, lwres_gabnresponse_t **structp, -+ int encodeflg) -+#else - lwres_gabnresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, - lwres_lwpacket_t *pkt, lwres_gabnresponse_t **structp) -+#endif /* WITH_MDN */ - { - lwres_result_t ret; -@@ -256,4 +265,9 @@ - lwres_addrlist_t addrlist; - lwres_addr_t *addr; -+#ifdef WITH_MDN -+ char *tmp_realname; -+ char *tmp_aliases; -+ mdn_result_t r; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -319,4 +333,26 @@ - if (ret != LWRES_R_SUCCESS) - goto out; -+#ifdef WITH_MDN -+ /* -+ * Convert from UCS to local encoding if needed. -+ */ -+ tmp_realname = (char *)malloc(1024); -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from UCS to local encoding */ -+ r = mdn_res_ucstolocal(ctx->confdata.mdnctx, gabn->realname, -+ tmp_realname, 1024); -+ if (r != mdn_success) { -+ free(tmp_realname); -+ tmp_realname = NULL; -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ break; -+ default: -+ strcpy(tmp_realname, gabn->realname); -+ break; -+ } -+ gabn->realname = tmp_realname; -+#endif /* WITH_MDN */ - - /* -@@ -328,4 +364,27 @@ - if (ret != LWRES_R_SUCCESS) - goto out; -+#ifdef WITH_MDN -+ /* -+ * Convert from UCS to local encoding. -+ */ -+ tmp_aliases = (char *)malloc(1024); -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from UCS to local encoding */ -+ r = mdn_res_ucstolocal(ctx->confdata.mdnctx, -+ gabn->aliases[x], -+ tmp_aliases, 1024); -+ if (r != mdn_success) { -+ free(tmp_aliases); -+ tmp_aliases = NULL; -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ break; -+ default: /* When encoding on DNS protocol */ -+ strcpy(tmp_aliases, gabn->aliases[x]); -+ break; -+ } -+ gabn->aliases[x] = tmp_aliases; -+#endif /* WITH_MDN */ - } - -@@ -391,4 +450,7 @@ - lwres_gabnresponse_t *gabn; - lwres_addr_t *addr; -+#ifdef WITH_MDN -+ unsigned int x; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -398,4 +460,12 @@ - *structp = NULL; - -+#ifdef WITH_MDN -+ free(gabn->realname); -+ gabn->realname = NULL; -+ for (x = 0 ; x < gabn->naliases ; x++) { -+ free(gabn->aliases[x]); -+ gabn->aliases[x] = NULL; -+ } -+#endif /* WITH_MDN */ - if (gabn->naliases > 0) { - CTXFREE(gabn->aliases, sizeof(char *) * gabn->naliases); ---- ./lib/lwres/lwres_gnba.c.orig Wed Jan 24 01:11:26 2001 -+++ ./lib/lwres/lwres_gnba.c Wed Jan 24 01:22:45 2001 -@@ -28,4 +28,7 @@ - #include <lwres/lwres.h> - #include <lwres/result.h> -+#ifdef WITH_MDN -+#include <mdn/res.h> -+#endif /* WITH_MDN */ - - #include "context_p.h" -@@ -204,6 +207,12 @@ - - lwres_result_t -+#ifdef WITH_MDN -+lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, -+ lwres_lwpacket_t *pkt, lwres_gnbaresponse_t **structp, -+ int encodeflg) -+#else - lwres_gnbaresponse_parse(lwres_context_t *ctx, lwres_buffer_t *b, - lwres_lwpacket_t *pkt, lwres_gnbaresponse_t **structp) -+#endif /* WITH_MDN */ - { - int ret; -@@ -212,4 +221,9 @@ - lwres_uint16_t naliases; - lwres_gnbaresponse_t *gnba; -+#ifdef WITH_MDN -+ char *tmp_realname; -+ char *tmp_aliases; -+ mdn_result_t r; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -261,4 +275,26 @@ - if (ret != LWRES_R_SUCCESS) - goto out; -+#ifdef WITH_MDN -+ /* -+ * Convert from UCS to local encoding if needed. -+ */ -+ tmp_realname = (char *)malloc(1024); -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from UCS to local encoding */ -+ r = mdn_res_ucstolocal(ctx->confdata.mdnctx, gnba->realname, -+ tmp_realname, 1024); -+ if (r != mdn_success) { -+ free(tmp_realname); -+ tmp_realname = NULL; -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ break; -+ default: -+ strcpy(tmp_realname, gnba->realname); -+ break; -+ } -+ gnba->realname = tmp_realname; -+#endif /* WITH_MDN */ - - /* -@@ -270,4 +306,27 @@ - if (ret != LWRES_R_SUCCESS) - goto out; -+#ifdef WITH_MDN -+ /* -+ * Convert from UCS to local encoding. -+ */ -+ tmp_aliases = (char *)malloc(1024); -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from UCS to local encoding */ -+ r = mdn_res_ucstolocal(ctx->confdata.mdnctx, -+ gnba->aliases[x], -+ tmp_aliases, 1024); -+ if (r != mdn_success) { -+ free(tmp_aliases); -+ tmp_aliases = NULL; -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ break; -+ default: /* When encoding on DNS protocol */ -+ strcpy(tmp_aliases, gnba->aliases[x]); -+ break; -+ } -+ gnba->aliases[x] = tmp_aliases; -+#endif /* WITH_MDN */ - } - -@@ -311,4 +370,7 @@ - { - lwres_gnbaresponse_t *gnba; -+#ifdef WITH_MDN -+ unsigned int x; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -318,4 +380,12 @@ - *structp = NULL; - -+#ifdef WITH_MDN -+ free(gnba->realname); -+ gnba->realname = NULL; -+ for (x = 0 ; x < gnba->naliases ; x++) { -+ free(gnba->aliases[x]); -+ gnba->aliases[x] = NULL; -+ } -+#endif /* WITH_MDN */ - if (gnba->naliases > 0) { - CTXFREE(gnba->aliases, sizeof(char *) * gnba->naliases); ---- ./lib/lwres/lwresutil.c.orig Wed Jan 24 01:11:30 2001 -+++ ./lib/lwres/lwresutil.c Wed Jan 24 01:22:45 2001 -@@ -33,4 +33,7 @@ - #include <lwres/lwres.h> - #include <lwres/result.h> -+#ifdef WITH_MDN -+#include <mdn/res.h> -+#endif /* WITH_MDN */ - - #include "assert_p.h" -@@ -160,8 +163,24 @@ - } - -+#ifdef WITH_MDN - lwres_result_t - lwres_getaddrsbyname(lwres_context_t *ctx, const char *name, - lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp) - { -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getaddrsbyname_enc(ctx, name, addrtypes, structp, 0)); -+} -+#endif /* WITH_MDN */ -+ -+lwres_result_t -+#ifdef WITH_MDN -+lwres_getaddrsbyname_enc(lwres_context_t *ctx, const char *name, -+ lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp, -+ int encodeflg) -+#else -+lwres_getaddrsbyname(lwres_context_t *ctx, const char *name, -+ lwres_uint32_t addrtypes, lwres_gabnresponse_t **structp) -+#endif /* WITH_MDN */ -+{ - lwres_gabnrequest_t request; - lwres_gabnresponse_t *response; -@@ -174,4 +193,8 @@ - char target_name[1024]; - unsigned int target_length; -+#ifdef WITH_MDN -+ mdn_result_t r; -+ char request_name[1024]; -+#endif /* WITH_MDN */ - - REQUIRE(ctx != NULL); -@@ -201,6 +224,35 @@ - */ - request.addrtypes = addrtypes; -+#ifdef WITH_MDN -+ /* -+ * Convert from local encoding to UCS, then perform normalization. -+ */ -+ switch (encodeflg) { -+ case LWRES_ENCODING_LOCAL: /* from local encoding */ -+ r = mdn_res_localtoucs(ctx->confdata.mdnctx, target_name, -+ request_name, sizeof(request_name)); -+ if (r == mdn_success) { -+ r = mdn_res_normalize(ctx->confdata.mdnctx, -+ request_name, -+ target_name, -+ sizeof(target_name)); -+ } -+ request.name = target_name; -+ break; -+ default: -+ r = mdn_res_normalize(ctx->confdata.mdnctx, target_name, -+ request_name, sizeof(request_name)); -+ request.name = request_name; -+ break; -+ } -+ if (r != mdn_success) { -+ ret = lwres_result_frommdn(r); -+ goto out; -+ } -+ request.namelen = strlen(request.name); -+#else - request.name = target_name; - request.namelen = target_length; -+#endif /* WITH_MDN */ - pkt.pktflags = 0; - pkt.serial = serial; -@@ -251,5 +303,9 @@ - * Parse the response. - */ -+#ifdef WITH_MDN -+ ret = lwres_gabnresponse_parse(ctx, &b_in, &pkt, &response, encodeflg); -+#else - ret = lwres_gabnresponse_parse(ctx, &b_in, &pkt, &response); -+#endif /* WITH_MDN */ - if (ret != LWRES_R_SUCCESS) - goto out; -@@ -273,8 +329,25 @@ - - -+#ifdef WITH_MDN -+lwres_result_t -+lwres_getnamebyaddr(lwres_context_t *ctx, lwres_uint32_t addrtype, -+ lwres_uint16_t addrlen, const unsigned char *addr, -+ lwres_gnbaresponse_t **structp) -+{ -+ /* The last parameter is a encoding type. Default is local encoding. */ -+ return (lwres_getnamebyaddr_enc(ctx, addrtype, addrlen, addr, structp, -+ LWRES_ENCODING_LOCAL)); -+} -+#endif /* WITH_MDN */ - lwres_result_t -+#ifdef WITH_MDN -+lwres_getnamebyaddr_enc(lwres_context_t *ctx, lwres_uint32_t addrtype, -+ lwres_uint16_t addrlen, const unsigned char *addr, -+ lwres_gnbaresponse_t **structp, int encodeflg) -+#else - lwres_getnamebyaddr(lwres_context_t *ctx, lwres_uint32_t addrtype, - lwres_uint16_t addrlen, const unsigned char *addr, - lwres_gnbaresponse_t **structp) -+#endif /* WITH_MDN */ - { - lwres_gnbarequest_t request; -@@ -359,5 +432,9 @@ - * Parse the response. - */ -+#ifdef WITH_MDN -+ ret = lwres_gnbaresponse_parse(ctx, &b_in, &pkt, &response, encodeflg); -+#else - ret = lwres_gnbaresponse_parse(ctx, &b_in, &pkt, &response); -+#endif /* WITH_MDN */ - if (ret != LWRES_R_SUCCESS) - goto out; -@@ -379,4 +456,21 @@ - return (ret); - } -+ -+#ifdef WITH_MDN -+lwres_result_t -+lwres_result_frommdn(mdn_result_t r) { -+ /* -+ * Convert mDNkit's result code to lwres's one. -+ */ -+ switch (r) { -+ case mdn_success: -+ return (LWRES_R_SUCCESS); -+ case mdn_nomemory: -+ return (LWRES_R_NOMEMORY); -+ default: -+ return (LWRES_R_FAILURE); -+ } -+} -+#endif - - lwres_result_t ---- ./bin/dig/dighost.c.orig Wed Jan 24 00:48:34 2001 -+++ ./bin/dig/dighost.c Wed Jan 24 01:24:34 2001 -@@ -33,4 +33,14 @@ - #include <string.h> +--- bin/dig/dig.docbook.orig Tue Feb 12 11:42:24 2002 ++++ bin/dig/dig.docbook Tue Feb 12 17:06:02 2002 +@@ -524,4 +524,19 @@ + + <refsect1> ++<title>MDN SUPPORT</title> ++<para> ++If <command>dig</command> has been built with mdn 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 MDN support for some reason, defines ++the <envar>MDN_DISABLE</envar> environment variable. ++The MDN support is disabled if the the variable is set when ++<command>dig</command> runs. ++</para> ++</refsect1> ++ ++<refsect1> + <title>FILES</title> + <para> +--- bin/dig/dighost.c.orig Tue Feb 12 11:42:34 2002 ++++ bin/dig/dighost.c Tue Feb 12 17:06:02 2002 +@@ -33,4 +33,15 @@ #include <limits.h> + +#ifdef HAVE_LOCALE_H +#include <locale.h> +#endif @@ -1374,28 +306,45 @@ +#include <mdn/resconf.h> +#include <mdn/res.h> +#endif - ++ #include <dns/byaddr.h> -@@ -133,4 +143,18 @@ - isc_uint32_t rr_limit = INT_MAX; + #include <dns/fixedname.h> +@@ -131,4 +142,18 @@ + dig_lookup_t *current_lookup = NULL; +#ifdef WITH_MDN +mdn_resconf_t mdnconf; + -+static void initialize_mdn(void); -+static isc_result_t output_filter(isc_buffer_t *buffer, -+ unsigned int used_org, -+ isc_boolean_t absolute); -+static mdn_result_t append_textname(char *name, const char *origin, -+ size_t namesize); -+static void mdn_check_result(mdn_result_t r, const char *msg); ++static void initialize_mdn(void); ++static isc_result_t output_filter(isc_buffer_t *buffer, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++static mdn_result_t append_textname(char *name, const char *origin, ++ size_t namesize); ++static void mdn_check_result(mdn_result_t r, const char *msg); + -+#define MAXDLEN 256 ++#define MAXDLEN 256 +#endif + /* * Apply and clear locks at the event level in global task. -@@ -675,4 +699,8 @@ +@@ -366,4 +391,7 @@ + looknew->servfail_stops = ISC_TRUE; + looknew->besteffort = ISC_TRUE; ++#ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++#endif + looknew->dnssec = ISC_FALSE; + looknew->udpsize = 0; +@@ -427,4 +455,7 @@ + looknew->servfail_stops = lookold->servfail_stops; + looknew->besteffort = lookold->besteffort; ++#ifdef WITH_MDN ++ looknew->mdn = ISC_TRUE; ++#endif + looknew->dnssec = lookold->dnssec; + looknew->udpsize = lookold->udpsize; +@@ -649,4 +680,8 @@ } +#ifdef WITH_MDN @@ -1404,87 +353,101 @@ + if (keyfile[0] != 0) setup_file_key(); -@@ -1221,4 +1249,9 @@ - isc_buffer_t b; +@@ -1169,4 +1204,15 @@ + dns_compress_t cctx; char store[MXNAME]; -+ char *textname; +#ifdef WITH_MDN + mdn_result_t mr; -+ char ucs_name[MXNAME], ucs_tmp[MXNAME]; ++ char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME]; ++#endif ++ ++#ifdef WITH_MDN ++ if (lookup->mdn == ISC_TRUE) ++ dns_name_settotextfilter(output_filter); ++ else ++ dns_name_settotextfilter(NULL); +#endif REQUIRE(lookup != NULL); -@@ -1274,4 +1307,13 @@ - result = dns_name_fromtext(lookup->oname, &b, dns_rootname, - ISC_FALSE, &lookup->onamebuf); +@@ -1197,4 +1243,19 @@ + sizeof(lookup->onamespace)); + +#ifdef WITH_MDN -+ mr = mdn_res_localtoucs(mdnconf, lookup->textname, ucs_name, -+ sizeof(ucs_name)); -+ mdn_check_result(mr, "local to UCS conversion"); -+ textname = ucs_name; -+#else -+ textname = lookup->textname; ++ if (lookup->mdn) { ++ /* ++ * We cannot convert `textname' and `origin' separately. ++ * `textname' doesn't contain TLD, but local mapping needs ++ * TLD. ++ */ ++ mr = mdn_res_nameconv(mdnconf, "ld", lookup->textname, ++ utf8_textname, sizeof(utf8_textname)); ++ mdn_check_result(mr, "convert textname to UTF-8"); ++ } else { ++ strcpy(utf8_textname, lookup->textname); ++ } +#endif + - if (result != ISC_R_SUCCESS) { - dns_message_puttempname(lookup->sendmsg, -@@ -1281,4 +1323,22 @@ - fatal("'%s' is not in legal name syntax (%s)", - lookup->origin->origin, + /* + * If the name has too many dots, force the origin to be NULL +@@ -1205,4 +1266,11 @@ + */ + /* XXX New search here? */ +#ifdef WITH_MDN -+ /* -+ * We cannot convert name and origin separately and combine -+ * them later, because some encoding scheme (such as UTF-5) -+ * can be applied only to an entire domain name, not a -+ * partial one. -+ */ -+ mr = append_textname(ucs_name, lookup->origin->origin, -+ sizeof(ucs_name)); -+ mdn_check_result(mr, "concatenation with origin"); -+ mr = mdn_res_normalize(mdnconf, ucs_name, ucs_tmp, -+ sizeof(ucs_tmp)); -+ mdn_check_result(mr, "normalization"); -+ mr = mdn_res_ucstodns(mdnconf, ucs_tmp, ucs_name, -+ sizeof(ucs_name)); -+ mdn_check_result(mr, "UCS to DNS encoding conversion"); -+ goto no_origin; ++ 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 - dns_result_totext(result)); - } -@@ -1302,7 +1362,26 @@ - } - dns_message_puttempname(lookup->sendmsg, &lookup->oname); + if ((count_dots(lookup->textname) >= ndots) || !usesearch) + lookup->origin = NULL; /* Force abs lookup */ +@@ -1210,5 +1278,29 @@ + lookup->origin = ISC_LIST_HEAD(search_list); + } ++#endif ++ ++#ifdef WITH_MDN ++ if (lookup->mdn) { ++ if (lookup->origin != NULL) { ++ mr = mdn_res_nameconv(mdnconf, "ld", ++ lookup->origin->origin, ++ utf8_origin, ++ sizeof(utf8_origin)); ++ mdn_check_result(mr, "convert origin to UTF-8"); ++ mr = append_textname(utf8_textname, utf8_origin, ++ sizeof(utf8_textname)); ++ mdn_check_result(mr, "append origin to textname"); ++ } ++ mr = mdn_res_nameconv(mdnconf, "MNI", utf8_textname, ++ idn_textname, sizeof(idn_textname)); ++ mdn_check_result(mr, "convert UTF-8 textname to IDN encoding"); ++ } +#endif - } else { - debug("using root origin"); ++ +#ifdef WITH_MDN -+ no_origin: ++ if (lookup->origin != NULL && !lookup->mdn) { ++#else + if (lookup->origin != NULL) { +#endif - if (!lookup->trace_root) { + debug("trying origin %s", lookup->origin->origin); + result = dns_message_gettempname(lookup->sendmsg, +@@ -1254,4 +1346,15 @@ + if (lookup->trace && lookup->trace_root) + dns_name_clone(dns_rootname, lookup->name); +#ifdef WITH_MDN -+ mr = mdn_res_normalize(mdnconf, ucs_name, ucs_tmp, -+ sizeof(ucs_tmp)); -+ mdn_check_result(mr, "normalization"); -+ mr = mdn_res_ucstodns(mdnconf, ucs_tmp, ucs_name, -+ sizeof(ucs_name)); -+ mdn_check_result(mr, "UCS to DNS encoding conversion"); -+ len = strlen(ucs_name); -+ isc_buffer_init(&b, ucs_name, len); ++ else if (lookup->mdn) { ++ len = strlen(idn_textname); ++ isc_buffer_init(&b, idn_textname, len); + isc_buffer_add(&b, len); + result = dns_name_fromtext(lookup->name, &b, + dns_rootname, + ISC_FALSE, + &lookup->namebuf); -+#else - len = strlen(lookup->textname); - isc_buffer_init(&b, lookup->textname, len); -@@ -1312,4 +1391,5 @@ - ISC_FALSE, - &lookup->namebuf); ++ } +#endif - } else { - dns_name_clone(dns_rootname, lookup->name); -@@ -2711,2 +2791,123 @@ + else { + len = strlen(lookup->textname); +@@ -2590,2 +2693,115 @@ isc_mem_destroy(&mctx); } + @@ -1492,7 +455,6 @@ +static void +initialize_mdn(void) { + mdn_result_t r; -+ mdn_converter_t conv; + +#ifdef HAVE_SETLOCALE + /* Set locale */ @@ -1518,12 +480,6 @@ + fatal("mdn configuration loading failed: %s", + mdn_result_tostring(r)); + -+ /* Allow utf-8 characters in domain names if necessary. */ -+ if ((conv = mdn_resconf_serverconverter(mdnconf)) != NULL && -+ !mdn_converter_isasciicompatible(conv)) { -+ debug("allowing UTF-8 characters in domain names"); -+ dns_name_allowutf8(ISC_TRUE); -+ } + /* Set domain name -> text post-conversion filter. */ + dns_name_settotextfilter(output_filter); +} @@ -1556,11 +512,10 @@ + /* + * Convert contents of 'tmp1' to local encoding. + */ -+ if (mdn_res_dnstoucs(mdnconf, tmp1, tmp2, MAXDLEN) -+ != mdn_success || -+ mdn_res_ucstolocal(mdnconf, tmp2, tmp1, MAXDLEN) ++ if (mdn_res_nameconv(mdnconf, "i!NL", tmp1, tmp2, MAXDLEN) + != mdn_success) + return (ISC_R_SUCCESS); ++ strcpy(tmp1, tmp2); + + /* + * Copy the converted contents in 'tmp1' back to 'buffer'. @@ -1608,566 +563,168 @@ +} + +#endif /* WITH_MDN */ ---- ./bin/named/Makefile.in.orig Wed Jan 24 00:49:10 2001 -+++ ./bin/named/Makefile.in Wed Jan 24 01:22:45 2001 -@@ -34,5 +34,5 @@ - CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include \ - ${LWRES_INCLUDES} ${DNS_INCLUDES} ${ISC_INCLUDES} \ -- ${OMAPI_INCLUDES} ${DBDRIVER_INCLUDES} -+ ${OMAPI_INCLUDES} ${DBDRIVER_INCLUDES} \ - - CDEFINES = -@@ -52,5 +52,5 @@ - - LIBS = ${LWRESLIBS} ${OMAPILIBS} ${DNSLIBS} ${ISCLIBS} \ -- ${DBDRIVER_LIBS} @LIBS@ -+ ${DBDRIVER_LIBS} ${ICONVLIB} @LIBS@ - - SUBDIRS = unix -@@ -64,5 +64,5 @@ - zoneconf.@O@ \ - lwaddr.@O@ lwresd.@O@ lwdclient.@O@ lwderror.@O@ lwdgabn.@O@ \ -- lwdgnba.@O@ lwdgrbn.@O@ lwdnoop.@O@ lwsearch.@O@ \ -+ lwdgnba.@O@ lwdgrbn.@O@ lwdmdn.@O@ lwdnoop.@O@ lwsearch.@O@ \ - $(DBDRIVER_OBJS) - -@@ -75,5 +75,5 @@ - zoneconf.c \ - lwaddr.c lwresd.c lwdclient.c lwderror.c lwdgabn.c \ -- lwdgnba.c lwdgrbn.c lwdnoop.c lwsearch.c \ -+ lwdgnba.c lwdgrbn.c lwdmdn.c lwdnoop.c lwsearch.c \ - $(DBDRIVER_SRCS) - ---- ./bin/named/include/named/globals.h.orig Wed Jan 24 00:49:01 2001 -+++ ./bin/named/include/named/globals.h Wed Jan 24 01:22:45 2001 -@@ -104,4 +104,12 @@ - EXTERN const char * ns_g_username INIT(NULL); +--- bin/dig/host.1.orig Tue Feb 12 11:42:35 2002 ++++ bin/dig/host.1 Tue Feb 12 17:06:02 2002 +@@ -88,6 +88,6 @@ + .PP + Non-recursive queries can be made via the \fB-r\fR option. +-Setting this option clears the \fBRD\fR \(em recursion +-desired \(em bit in the query which \fBhost\fR makes. ++Setting this option clears the \fBRD\fR recursion ++desired bit in the query which \fBhost\fR makes. + This should mean that the name server receiving the query will not + attempt to resolve \fIname\fR. The +@@ -121,4 +121,15 @@ + will be set to the number of seconds given by the hardware's maximum + value for an integer quantity. ++.SH "MDN SUPPORT" ++.PP ++If \fBhost\fR has been built with mdn support, it can ++accept and display non-ASCII domain names. ++\fBhost\fR appropriately converts character encoding of ++domain name before sending a request to DNS server or displaying a ++reply from the server. ++If you'd like to turn off the MDN support for some reason, defines ++the \fBMDN_DISABLE\fR environment variable. ++The MDN support is disabled if the the variable is set when ++\fBhost\fR runs. + .SH "FILES" + .PP +--- bin/dig/host.c.orig Tue Feb 12 11:42:37 2002 ++++ bin/dig/host.c Tue Feb 12 17:06:02 2002 +@@ -667,4 +667,9 @@ + ISC_LIST_APPEND(lookup_list, lookup, link); + ++#ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++#endif ++ + usesearch = ISC_TRUE; + } +--- bin/dig/host.docbook.orig Tue Feb 12 11:42:38 2002 ++++ bin/dig/host.docbook Tue Feb 12 17:06:02 2002 +@@ -182,4 +182,19 @@ + + <refsect1> ++<title>MDN SUPPORT</title> ++<para> ++If <command>host</command> has been built with mdn 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 MDN support for some reason, defines ++the <envar>MDN_DISABLE</envar> environment variable. ++The MDN support is disabled if the the variable is set when ++<command>host</command> runs. ++</para> ++</refsect1> ++ ++<refsect1> + <title>FILES</title> + <para> +--- bin/dig/nslookup.c.orig Tue Feb 12 11:42:41 2002 ++++ bin/dig/nslookup.c Tue Feb 12 17:06:02 2002 +@@ -657,4 +657,8 @@ + lookup->origin = NULL; + ISC_LIST_INIT(lookup->my_server_list); ++#ifdef WITH_MDN ++ if (getenv(MDN_DISABLE_ENVVAR_NAME) != NULL) ++ lookup->mdn = ISC_FALSE; ++#endif + debug("looking up %s", lookup->textname); + } +--- bin/dig/include/dig/dig.h.orig Thu Nov 15 12:24:13 2001 ++++ bin/dig/include/dig/dig.h Tue Feb 12 17:06:03 2002 +@@ -75,4 +75,11 @@ + */ -+#ifdef WITH_MDN +/* -+ * MDN configuration. ++ * Name of environment variable which disables MDN support if defined. + */ -+EXTERN char * lwresd_g_mdnconffile; -+EXTERN isc_boolean_t lwresd_g_mdnreloadwanted; -+#endif -+ - #undef EXTERN - #undef INIT ---- ./bin/named/include/named/lwdmdn.h.orig Wed Jan 24 01:22:45 2001 -+++ ./bin/named/include/named/lwdmdn.h Wed Jan 24 01:22:45 2001 -@@ -0,0 +1,23 @@ -+/* $Id: lwdmdn.h,v 1.1 2000/08/16 08:55:32 ishisone Exp $ */ -+ -+#ifndef NAMED_LWDMDN_H -+#define NAMED_LWDMDN_H -+ -+#include <isc/types.h> -+#include <mdn/result.h> -+ -+ISC_LANG_BEGINDECLS -+ -+void -+ns_lwdmdn_initialize(void); -+ -+isc_result_t -+ns_lwdmdn_convertfromutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer); -+ -+isc_result_t -+ns_lwdmdn_converttoutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer); -+ -+ISC_LANG_ENDDECLS -+ -+#endif /* NAMED_LWDMDN_H */ -+ ---- ./bin/named/lwdgabn.c.orig Wed Jan 24 00:49:30 2001 -+++ ./bin/named/lwdgabn.c Wed Jan 24 01:22:45 2001 -@@ -35,4 +35,7 @@ - #include <named/lwaddr.h> - #include <named/lwdclient.h> -+#ifdef WITH_MDN -+#include <named/lwdmdn.h> -+#endif - #include <named/lwresd.h> - #include <named/lwsearch.h> -@@ -277,4 +280,7 @@ - isc_result_t result; - isc_uint16_t naliases; +#ifdef WITH_MDN -+ isc_buffer_t *tbufp; -+#endif - - b = client->recv_buffer; -@@ -283,8 +289,25 @@ - * Render the new name to the buffer. - */ -+#ifdef WITH_MDN -+ tbufp = NULL; -+ result = isc_buffer_allocate(client->clientmgr->mctx, &tbufp, 256); -+ if (result != ISC_R_SUCCESS) -+ return (result); -+ result = dns_name_totext(dns_fixedname_name(&client->target_name), -+ ISC_TRUE, tbufp); -+ if (result != ISC_R_SUCCESS) { -+ isc_buffer_free(&tbufp); -+ return (result); -+ } -+ result = ns_lwdmdn_converttoutf8(tbufp, &client->recv_buffer); -+ isc_buffer_free(&tbufp); -+ if (result != ISC_R_SUCCESS) -+ return (result); -+#else - result = dns_name_totext(dns_fixedname_name(&client->target_name), - ISC_TRUE, &client->recv_buffer); - if (result != ISC_R_SUCCESS) - return (result); ++#define MDN_DISABLE_ENVVAR_NAME "MDN_DISABLE" +#endif ++ + ISC_LANG_BEGINDECLS - /* -@@ -312,4 +335,7 @@ - isc_result_t result; - dns_name_t *tname; +@@ -110,4 +117,7 @@ + new_search, + besteffort, +#ifdef WITH_MDN -+ isc_buffer_t *tbufp; ++ mdn, +#endif + dnssec; + char textname[MXNAME]; /* Name we're going to be looking up */ +--- lib/dns/name.c.orig Tue Feb 12 11:43:36 2002 ++++ lib/dns/name.c Tue Feb 12 17:06:03 2002 +@@ -195,4 +195,11 @@ + dns_name_t *dns_wildcardname = &wild; - b = client->recv_buffer; -@@ -323,5 +349,19 @@ - * Render the new name to the buffer. - */ +#ifdef WITH_MDN -+ tbufp = NULL; -+ result = isc_buffer_allocate(client->clientmgr->mctx, &tbufp, 256); -+ if (result != ISC_R_SUCCESS) -+ return (result); -+ result = dns_name_totext(tname, ISC_TRUE, tbufp); -+ if (result != ISC_R_SUCCESS) { -+ isc_buffer_free(&tbufp); -+ return (result); -+ } -+ result = ns_lwdmdn_converttoutf8(tbufp, &client->recv_buffer); -+ isc_buffer_free(&tbufp); -+#else - result = dns_name_totext(tname, ISC_TRUE, &client->recv_buffer); ++/* ++ * dns_name_t to text post-conversion procedure. ++ */ ++static dns_name_totextfilter_t totext_filter_proc = NULL; +#endif - if (result != ISC_R_SUCCESS) - return (result); -@@ -599,4 +639,7 @@ - ns_lwdclientmgr_t *cm; - isc_buffer_t namebuf; ++ + static void + set_offsets(const dns_name_t *name, unsigned char *offsets, +@@ -1683,4 +1690,7 @@ + isc_boolean_t saw_root = ISC_FALSE; + char num[4]; +#ifdef WITH_MDN -+ isc_buffer_t *tnamebufp; ++ unsigned int oused = target->used; +#endif - REQUIRE(NS_LWDCLIENT_ISRECVDONE(client)); -@@ -612,11 +655,39 @@ - goto out; - -+#ifdef WITH_MDN -+ /* -+ * XXX Assuming allocation size for req->name is larger than -+ * req->namelen by at least one, which is true in the current -+ * implementation. -+ */ -+ isc_buffer_init(&namebuf, req->name, req->namelen + 1); -+ isc_buffer_add(&namebuf, req->namelen); -+ tnamebufp = NULL; -+ result = isc_buffer_allocate(client->clientmgr->mctx, &tnamebufp, 256); -+ if (result != ISC_R_SUCCESS) -+ goto out; -+ /* -+ * Convert UTF-8 string in namebuf into DNS protocol encoding. -+ */ -+ result = ns_lwdmdn_convertfromutf8(&namebuf, tnamebufp); -+ if (result != ISC_R_SUCCESS) { -+ isc_buffer_free(&tnamebufp); -+ goto out; -+ } -+#else - isc_buffer_init(&namebuf, req->name, req->namelen); - isc_buffer_add(&namebuf, req->namelen); -+#endif + /* +@@ -1860,4 +1870,8 @@ + isc_buffer_add(target, tlen - trem); - dns_fixedname_init(&client->target_name); - dns_fixedname_init(&client->query_name); -+#ifdef WITH_MDN -+ result = dns_name_fromtext(dns_fixedname_name(&client->query_name), -+ tnamebufp, dns_rootname, ISC_FALSE, NULL); -+ isc_buffer_free(&tnamebufp); -+#else - result = dns_name_fromtext(dns_fixedname_name(&client->query_name), - &namebuf, NULL, ISC_FALSE, NULL); -+#endif - if (result != ISC_R_SUCCESS) - goto out; ---- ./bin/named/lwdgnba.c.orig Wed Jan 24 00:49:32 2001 -+++ ./bin/named/lwdgnba.c Wed Jan 24 01:22:45 2001 -@@ -30,4 +30,7 @@ - #include <named/types.h> - #include <named/lwdclient.h> +#ifdef WITH_MDN -+#include <named/lwdmdn.h> ++ if (totext_filter_proc != NULL) ++ return ((*totext_filter_proc)(target, oused, saw_root)); +#endif - - static void start_byaddr(ns_lwdclient_t *); -@@ -48,4 +51,7 @@ - isc_uint16_t naliases; + return (ISC_R_SUCCESS); + } +@@ -3316,2 +3330,8 @@ + } +#ifdef WITH_MDN -+ isc_buffer_t *tbufp; ++void ++dns_name_settotextfilter(dns_name_totextfilter_t proc) { ++ totext_filter_proc = proc; ++} +#endif - UNUSED(task); - -@@ -95,7 +101,23 @@ - b = client->recv_buffer; +--- lib/dns/include/dns/name.h.orig Tue Feb 12 11:43:41 2002 ++++ lib/dns/include/dns/name.h Tue Feb 12 17:06:03 2002 +@@ -219,4 +219,15 @@ + #define DNS_NAME_MAXWIRE 255 +#ifdef WITH_MDN -+ tbufp = NULL; -+ result = isc_buffer_allocate(cm->mctx, &tbufp, 256); -+ if (result != ISC_R_SUCCESS) -+ goto out; -+ result = dns_name_totext(name, ISC_TRUE, tbufp); -+ if (result != ISC_R_SUCCESS) { -+ isc_buffer_free(&tbufp); -+ goto out; -+ } -+ result = ns_lwdmdn_converttoutf8(tbufp, &client->recv_buffer); -+ isc_buffer_free(&tbufp); -+ if (result != ISC_R_SUCCESS) -+ goto out; -+#else - result = dns_name_totext(name, ISC_TRUE, &client->recv_buffer); - if (result != ISC_R_SUCCESS) - goto out; -+#endif - ns_lwdclient_log(50, "found name '%.*s'", - client->recv_buffer.used - b.used, ---- ./bin/named/lwdmdn.c.orig Wed Jan 24 01:22:45 2001 -+++ ./bin/named/lwdmdn.c Wed Jan 24 01:22:45 2001 -@@ -0,0 +1,283 @@ -+/* $Id: lwdmdn.c,v 1.6 2000/09/07 06:27:40 ishisone Exp $ */ -+ -+#include <config.h> -+ -+#include <stdlib.h> -+#include <stdarg.h> -+#include <string.h> -+ -+#ifdef WITH_MDN -+#include <mdn/result.h> -+#include <mdn/log.h> -+#include <mdn/resconf.h> -+#include <mdn/res.h> ++/* ++ * 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 + -+#include <isc/result.h> -+#include <isc/rwlock.h> -+#include <isc/util.h> -+ -+#include <named/types.h> -+#include <named/log.h> -+#ifdef WITH_MDN -+#include <named/lwdmdn.h> -+#endif -+#include <named/lwdclient.h> -+#include <named/globals.h> + /*** + *** Initialization +@@ -1244,4 +1255,12 @@ + * + */ + +#ifdef WITH_MDN -+ -+typedef enum { -+ convert_from_utf8, -+ convert_to_utf8 -+} convert_direction_t; -+ -+static isc_logmodule_t modules[] = { -+ { "mdn", 0 }, -+ { NULL, 0 } -+}; -+#define NS_LOGMODULE_MDN (&modules[0]) -+ -+static isc_rwlock_t mdnconflock; -+static mdn_resconf_t mdnconf = NULL; -+ -+static isc_result_t convert_buffer(isc_buffer_t *from_buffer, -+ isc_buffer_t *to_buffer, -+ convert_direction_t dir); -+static isc_result_t load_mdnconfiguration(const char *filename); -+static isc_result_t mdnresult_to_iscresult(mdn_result_t r); -+static void set_log_level(int level); -+static void logger(int level, const char *msg); -+static void logwrite(int level, const char *fmt, ...); -+ +void -+ns_lwdmdn_initialize(void) { -+ mdn_result_t r; -+ isc_result_t result; -+ -+ logwrite(ISC_LOG_DEBUG(50), "initializing mdn"); -+ -+ /* Register MDN module for logging. */ -+ isc_log_registermodules(ns_g_lctx, modules); -+ -+ /* Set libmdn log hander. */ -+ mdn_log_setproc(logger); -+ -+ /* Set log level. */ -+ set_log_level(ns_g_debuglevel); -+ -+ /* General initialization. */ -+ r = mdn_resconf_initialize(); -+ RUNTIME_CHECK(r == mdn_success); -+ -+ /* Create configuration context. */ -+ r = mdn_resconf_create(&mdnconf); -+ RUNTIME_CHECK(r == mdn_success); -+ -+ /* Initialize configuration lock variable. */ -+ result = isc_rwlock_init(&mdnconflock, 1, 1); -+ RUNTIME_CHECK(result == ISC_R_SUCCESS); -+ -+ /* Load configuration file. */ -+ lwresd_g_mdnreloadwanted = 1; -+ (void)load_mdnconfiguration(lwresd_g_mdnconffile); -+} -+ -+isc_result_t -+ns_lwdmdn_convertfromutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer) { -+ return convert_buffer(from_buffer, to_buffer, convert_from_utf8); -+} -+ -+isc_result_t -+ns_lwdmdn_converttoutf8(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer) { -+ return convert_buffer(from_buffer, to_buffer, convert_to_utf8); -+} -+ -+static isc_result_t -+convert_buffer(isc_buffer_t *from_buffer, isc_buffer_t *to_buffer, -+ convert_direction_t dir) -+{ -+ isc_result_t result; -+ mdn_result_t r; -+ char *fromstr, *tostr; -+ char tmp[256]; -+ size_t tolen; -+ -+ /* -+ * Reload MDN configuration file, if necessary. -+ */ -+ if (lwresd_g_mdnreloadwanted) { -+ result = load_mdnconfiguration(lwresd_g_mdnconffile); -+ } -+ -+ /* -+ * Since libmdn assumes all the strings are NUL-terminated, -+ * teminate the input string. If the buffer has some free space, -+ * utilize it. Otherwise, make a local copy. -+ */ -+ if (isc_buffer_remaininglength(from_buffer) > 0) { -+ fromstr = isc_buffer_used(from_buffer); /* temporary */ -+ *fromstr = '\0'; -+ fromstr = isc_buffer_base(from_buffer); -+ } else { -+ size_t fromlen = isc_buffer_usedlength(from_buffer); -+ -+ if (fromlen >= sizeof(tmp)) -+ fromlen = sizeof(tmp) - 1; -+ fromstr = tmp; -+ memcpy(fromstr, isc_buffer_base(from_buffer), fromlen); -+ fromstr[fromlen] = '\0'; -+ } -+ tostr = isc_buffer_used(to_buffer); -+ tolen = isc_buffer_availablelength(to_buffer); -+ -+ RWLOCK(&mdnconflock, isc_rwlocktype_read); -+ -+ if (dir == convert_from_utf8) -+ r = mdn_res_ucstodns(mdnconf, fromstr, tostr, tolen); -+ else -+ r = mdn_res_dnstoucs(mdnconf, fromstr, tostr, tolen); -+ -+ RWUNLOCK(&mdnconflock, isc_rwlocktype_read); -+ -+ if (r != mdn_success) -+ return (mdnresult_to_iscresult(r)); -+ -+ isc_buffer_add(to_buffer, strlen(tostr)); -+ -+ return (ISC_R_SUCCESS); -+} -+ -+static isc_result_t -+load_mdnconfiguration(const char *filename) { -+ isc_result_t result = ISC_R_SUCCESS; -+ mdn_result_t r; -+ mdn_converter_t conv; -+ isc_boolean_t loaded = ISC_FALSE; -+ isc_boolean_t allow_utf8; -+ -+ RWLOCK(&mdnconflock, isc_rwlocktype_write); -+ -+ logwrite(ISC_LOG_DEBUG(50), "loading mdn configuration %s", -+ filename == NULL ? mdn_resconf_defaultfile() : filename); -+ -+ if (lwresd_g_mdnreloadwanted) { -+ r = mdn_resconf_loadfile(mdnconf, filename); -+ if (r == mdn_success) -+ loaded = ISC_TRUE; -+ else -+ result = mdnresult_to_iscresult(r); -+ } -+ lwresd_g_mdnreloadwanted = 0; -+ logwrite(ISC_LOG_DEBUG(100), "finish loading mdn configuration"); -+ -+ RWUNLOCK(&mdnconflock, isc_rwlocktype_write); -+ -+ if (loaded) { -+ if ((conv = mdn_resconf_serverconverter(mdnconf)) != NULL && -+ !mdn_converter_isasciicompatible(conv)) { -+ logwrite(ISC_LOG_DEBUG(50), -+ "allowing UTF-8 domain names"); -+ allow_utf8 = ISC_TRUE; -+ } else { -+ allow_utf8 = ISC_FALSE; -+ } -+ dns_name_allowutf8(allow_utf8); -+ } -+ -+ return (result); -+} -+ -+static isc_result_t -+mdnresult_to_iscresult(mdn_result_t r) { -+ switch (r) { -+ case mdn_success: -+ return (ISC_R_SUCCESS); -+ case mdn_notfound: -+ case mdn_noentry: -+ case mdn_invalid_name: -+ return (ISC_R_NOTFOUND); -+ case mdn_buffer_overflow: -+ return (ISC_R_NOSPACE); -+ case mdn_nomemory: -+ return (ISC_R_NOMEMORY); -+ case mdn_nofile: -+ return (ISC_R_FILENOTFOUND); -+ default: -+ return (ISC_R_FAILURE); -+ } -+} -+ -+static void -+set_log_level(int level) { -+ int loglevel; -+ -+ if (level < ISC_LOG_ERROR) { -+ loglevel = mdn_log_level_fatal; -+ } else if (level < ISC_LOG_WARNING) { -+ loglevel = mdn_log_level_error; -+ } else if (level < ISC_LOG_INFO) { -+ loglevel = mdn_log_level_warning; -+ } else if (level < ISC_LOG_DEBUG(50)) { -+ loglevel = mdn_log_level_info; -+ } else if (level < ISC_LOG_DEBUG(100)) { -+ loglevel = mdn_log_level_trace; -+ } else { -+ loglevel = mdn_log_level_dump; -+ } -+ mdn_log_setlevel(loglevel); -+} -+ -+static void -+logger(int level, const char *msg) { -+ int loglevel; -+ int msglen; -+ -+ /* -+ * Convert libmdn's log level to bind's log level. -+ */ -+ switch (level) { -+ case mdn_log_level_fatal: -+ loglevel = ISC_LOG_CRITICAL; -+ break; -+ case mdn_log_level_error: -+ loglevel = ISC_LOG_ERROR; -+ break; -+ case mdn_log_level_warning: -+ loglevel = ISC_LOG_WARNING; -+ break; -+ case mdn_log_level_info: -+ loglevel = ISC_LOG_INFO; -+ break; -+ case mdn_log_level_trace: -+ loglevel = ISC_LOG_DEBUG(50); /* XXX */ -+ break; -+ case mdn_log_level_dump: -+ default: -+ loglevel = ISC_LOG_DEBUG(100); /* XXX */ -+ break; -+ } -+ -+ /* -+ * Since libmdn's messages are end with newline, we have to -+ * remove it. -+ */ -+ msglen = strlen(msg); -+ if (msglen > 0 && msg[msglen - 1] == '\n') -+ msglen--; -+ -+ isc_log_write(ns_g_lctx, NS_LOGCATEGORY_CLIENT, NS_LOGMODULE_MDN, -+ loglevel, "%.*s", msglen, msg); -+} -+ -+static void -+logwrite(int level, const char *fmt, ...) { -+ va_list args; -+ -+ va_start(args, fmt); -+ isc_log_vwrite(ns_g_lctx, NS_LOGCATEGORY_CLIENT, NS_LOGMODULE_MDN, -+ level, fmt, args); -+ va_end(args); -+} -+ ++dns_name_settotextfilter(dns_name_totextfilter_t proc); ++/* ++ * Call 'proc' at the end of dns_name_totext. ++ */ +#endif /* WITH_MDN */ ---- ./bin/named/lwresd.c.orig Wed Jan 24 00:49:36 2001 -+++ ./bin/named/lwresd.c Wed Jan 24 01:22:45 2001 -@@ -47,4 +47,7 @@ - #include <named/log.h> - #include <named/lwaddr.h> -+#ifdef WITH_MDN -+#include <named/lwdmdn.h> -+#endif - #include <named/lwresd.h> - #include <named/lwdclient.h> -@@ -351,4 +354,11 @@ - goto fail; - } -+ -+#ifdef WITH_MDN -+ /* -+ * Initialize MDN stuff. -+ */ -+ ns_lwdmdn_initialize(); -+#endif - if (lwres->searchlist != NULL) { ---- ./bin/named/main.c.orig Wed Jan 24 00:49:40 2001 -+++ ./bin/named/main.c Wed Jan 24 01:22:45 2001 -@@ -278,5 +278,9 @@ - isc_commandline_errprint = ISC_FALSE; - while ((ch = isc_commandline_parse(argc, argv, -+#ifdef WITH_MDN /* Additional option 'M'. */ -+ "c:C:d:fgi:lM:n:N:p:P:st:u:vx:")) != -+#else - "c:C:d:fgi:ln:N:p:P:st:u:vx:")) != -+#endif - -1) { - switch (ch) { -@@ -312,4 +316,9 @@ - ns_g_lwresdonly = ISC_TRUE; - break; -+#ifdef WITH_MDN -+ case 'M': -+ lwresd_g_mdnconffile = isc_commandline_argument; -+ break; -+#endif - case 'N': /* Deprecated. */ - case 'n': + #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1) diff --git a/contrib/idn/mdnkit/tools/Makefile.in b/contrib/idn/mdnkit/tools/Makefile.in index ee675879..c23f5fb8 100644 --- a/contrib/idn/mdnkit/tools/Makefile.in +++ b/contrib/idn/mdnkit/tools/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.9 2001/04/06 07:53:12 ishisone Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:47:00 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -61,7 +61,7 @@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ -SUBDIRS = mdnconv runmdn +SUBDIRS = mdnconv @RUNMDN_SUBDIR@ SHELL = @SHELL@ diff --git a/contrib/idn/mdnkit/tools/mdnconv/Makefile.in b/contrib/idn/mdnkit/tools/mdnconv/Makefile.in index d6f4ab8e..e2af9b56 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/Makefile.in +++ b/contrib/idn/mdnkit/tools/mdnconv/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.15 2001/03/28 02:12:37 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:47:01 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -75,22 +75,29 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs SHELL = @SHELL@ LIBTOOL = @LIBTOOL@ +ICONVINC = @ICONVINC@ +ICONVLIB = @ICONVLIB@ +MDNLIB = ../../lib/libmdn.la + OPTS = -INCS = -I$(srcdir)/../../include -I../../include +INCS = -I$(srcdir)/../../include -I../../include $(ICONVINC) DEFS = CFLAGS = $(OPTS) $(INCS) $(DEFS) @CFLAGS@ +LDFLAGS = $(OPTS) @LDFLAGS@ SRCS = mdnconv.c util.c OBJS = mdnconv.o util.o -ICONVLIB = @ICONVLIB@ -MDNLIB = ../../lib/libmdn.la - -all: mdnconv +all: mdnconv mdnslookup mdnconv: $(OBJS) $(MDNLIB) - $(LIBTOOL) --mode=link $(CC) -o $@ $(OBJS) $(MDNLIB) $(ICONVLIB) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ \ + $(OBJS) $(MDNLIB) $(ICONVLIB) + +mdnslookup: $(srcdir)/mdnslookup.in + sed -e 's%[@]bindir[@]%$(bindir)%' $(srcdir)/mdnslookup.in > mdnslookup + chmod 0755 mdnslookup install: install-prog install-man @@ -103,5 +110,5 @@ install-man: $(INSTALL_DATA) $(srcdir)/mdnconv.1 $(mandir)/man1 clean: - rm -f *.o mdnconv *.core core *~ + rm -f *.o mdnconv mdnslookup *.core core *~ rm -fr .libs/ diff --git a/contrib/idn/mdnkit/tools/mdnconv/mdnconv.1 b/contrib/idn/mdnkit/tools/mdnconv/mdnconv.1 index 13bb3936..c79116a2 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/mdnconv.1 +++ b/contrib/idn/mdnkit/tools/mdnconv/mdnconv.1 @@ -1,4 +1,4 @@ -.\" $Id: mdnconv.1,v 1.17 2001/05/18 04:16:27 ishisone Exp $ +.\" $Id: mdnconv.1,v 1.1 2002/01/02 02:47:01 marka Exp $ .\" .\" Copyright (c) 2000,2001 Japan Network Information Center. .\" All rights reserved. @@ -9,8 +9,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -104,10 +104,13 @@ standard domain name preperation (NAMEPREP) Furthermore, delimiter mapping is also performed in case \-delimitermap command line option is specified. .PP -The other mode is a reverse convertion, from IDN-encoded domain name to +The other mode is a reverse conversion, from IDN-encoded domain name to local-encoded domain names. -Since IDN-ecoded names are usually already normalized by local mapping and -NAMEPREP process, only codeset conversion is performed in this mode. +In this mode, local mapping and NAMEPREP are not performed since +IDN-encoded names should already be normalized. +Instead, a check is done in order to make sure the IDN-encoded domain name +is properly NAMEPREP'ed. If it is not, the name will be output in +IDN encoding, not in the local encoding. .\" .SH OPTIONS Normally @@ -124,25 +127,13 @@ Any of the following codeset names can be specified. .IP "\(bu" 2 Any codeset names which \fIiconv_open()\fP library function accepts .IP "\(bu" 2 -\f(CWRACE\fR -.IP "\(bu" 2 -\f(CWBRACE\fR +\f(CWAMC-ACE-Z\fR .IP "\(bu" 2 -\f(CWLACE\fR +\f(CWRACE\fR .IP "\(bu" 2 \f(CWDUDE\fR .IP "\(bu" 2 -\f(CWUTF-5\fR -.IP "\(bu" 2 -\f(CWUTF-6\fR -.IP "\(bu" 2 -\f(CWAltDUDE\fR -.IP "\(bu" 2 -\f(CWAMC-ACE-O\fR -.IP "\(bu" 2 -\f(CWAMC-ACE-M\fR -.IP "\(bu" 2 -\f(CWAMC-ACE-R\fR +\f(CWUTF-8\fR .IP "\(bu" 2 Any alias names for the above, defined by the codeset alias file. .RE @@ -182,12 +173,15 @@ Specify the version of NAMEPREP. The following is a list of currently available .IR version s. .RS 4 -.IP \f(CWnameprep-02\fR 4 -Perform NAMEPREP according to the Internet Draft -``draft-ietf-idn-nameprep-02.txt'' (NAMEPREP-02). .IP \f(CWnameprep-03\fR 4 Perform NAMEPREP according to the Internet Draft ``draft-ietf-idn-nameprep-03.txt'' (NAMEPREP-03). +.IP \f(CWnameprep-05\fR 4 +Perform NAMEPREP according to the Internet Draft +``draft-ietf-idn-nameprep-05.txt'' (NAMEPREP-05). +.IP \f(CWnameprep-06\fR 4 +Perform NAMEPREP according to the Internet Draft +``draft-ietf-idn-nameprep-06.txt'' (NAMEPREP-06). .RE .IP "" 4 This option is a shorthand for specifying the 4 options below. @@ -207,13 +201,10 @@ This option is a shorthand for specifying the 4 options below. .I version .ft R .RE -.IP "" 4 -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-nonameprep\fR, \fB\-N\fR -Specify to skip NAMEPREP process in the normal conversion mode. -.br -This option is only meaningful in the normal conversion mode. +Specify to skip NAMEPREP process (or NAMEPREP verification process +in the reverse conversion mode). .TP 4 \fB\-map\fR \fImap\fR Specify the name of the mapping rule for NAMEPREP mapping process. @@ -221,10 +212,12 @@ Currently, following .IR map s are available. .RS 4 -.IP \f(CWnameprep-02\fR 4 -Use the list of mappings specified by NAMEPREP-02 draft. .IP \f(CWnameprep-03\fR 4 Use the list of mappings specified by NAMEPREP-03 draft. +.IP \f(CWnameprep-05\fR 4 +Use the list of mappings specified by NAMEPREP-05 draft. +.IP \f(CWnameprep-06\fR 4 +Use the list of mappings specified by NAMEPREP-06 draft. .IP \f(CWfilemap:\fR\fIpath\fR 4 Use list of mappings specified by mapfile .IR path . @@ -238,37 +231,25 @@ specification. If neither this option nor ``\-nameprep'' are specified, the schemes specified in the configuration file (``nameprep-map'' entry) are used. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-normalize\fP \fIscheme\fP Specify the normalization scheme for NAMEPREP normalization process. Currently, following \fIscheme\fPs are available: .RS 4 -.IP \f(CWascii-uppercase\fR -ASCII lowercase to uppercase mapping. -.IP \f(CWascii-lowercase\fR -ASCII uppercase to lowercase mapping. -.IP \f(CWunicode-uppercase\fR -Unicode lowercase to uppercase mapping, which is described in -``Unicode Technical Report #21: Case Mappings'', -available from unicode.org. -.IP \f(CWunicode-lowercase\fR -Unicode uppercase to lowercase mapping, according ``Case Mappings''. -.IP \f(CWunicode-foldcase\fR -Unicode case-folding for case-less string matching, -also described in the above document. -.IP \f(CWunicode-form-c\fR -Unicode Normlization Form C, which is described in -``Unicode Technical Report #15: Unicode Normalization Forms'', -also available from unicode.org. .IP \f(CWunicode-form-kc\fR -Unicode Normlization Form KC, also described in the above -document. -.IP \f(CWnameprep-02\fR -Synonim for ``unicode-form-kc''. +Unicode Normlization Form KC, also described in +``Unicode Technical Report #15: Unicode Normalization Forms'', +available from unicode.org. +.IP \f(CWunicode-form-kc/3.0.1\fR +Unicode Normlization Form KC, version 3.0.1 +.IP \f(CWunicode-form-kc/3.1.0\fR +Unicode Normlization Form KC, version 3.1.0 .IP \f(CWnameprep-03\fR -Synonim for ``unicode-form-kc''. +Synonim for ``unicode-form-kc/3.0.1''. +.IP \f(CWnameprep-05\fR +Synonim for ``unicode-form-kc/3.1.0''. +.IP \f(CWnameprep-06\fR +Synonim for ``unicode-form-kc/3.1.0''. .RE .IP "" 4 This option can be specified more than once. @@ -278,8 +259,6 @@ specification. If neither this option nor ``\-nameprep'' are specified, the schemes specified in the configuration file (``nameprep-normalize'' entry) are used. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-prohibit\fR \fIset\fR Specify the set of prohibited characters. @@ -287,10 +266,12 @@ Currently, following .IR set s are available. .RS 4 -.IP \f(CWnameprep-02\fR 4 -Use list of prohibit characters specified by NAMEPREP-02 draft. .IP \f(CWnameprep-03\fR 4 Use list of prohibit characters specified by NAMEPREP-03 draft. +.IP \f(CWnameprep-05\fR 4 +Use list of prohibit characters specified by NAMEPREP-05 draft. +.IP \f(CWnameprep-06\fR 4 +Use list of prohibit characters specified by NAMEPREP-06 draft. .IP \f(CWfileset:\fR\fIpath\fR 4 Use list of characters specified by setfile .IR path . @@ -303,8 +284,6 @@ prohibited characters is the union of the specified sets. If neither this option nor ``\-nameprep'' is specified, list of characters specified by the configuration file (``nameprep-prohibit'' entry) is used. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-unassigned\fR \fIset\fR Specify the set of unassigned codepoints. @@ -312,10 +291,12 @@ Currently, following .IR set s are available. .RS 4 -.IP \f(CWnameprep-02\fR 4 -Use the list of unassigned characters specified by NAMEPREP-02 draft. .IP \f(CWnameprep-03\fR 4 Use the list of unassigned characters specified by NAMEPREP-03 draft. +.IP \f(CWnameprep-05\fR 4 +Use the list of unassigned characters specified by NAMEPREP-05 draft. +.IP \f(CWnameprep-06\fR 4 +Use the list of unassigned characters specified by NAMEPREP-06 draft. .IP \f(CWfileset:\fR\fIpath\fR 4 Use list of characters specified by setfile .IR path . @@ -331,14 +312,10 @@ prohibited characters is the union of the specified sets. If neither this option nor ``\-nameprep'' is specified, list of characters specified by the configuration file (``nameprep-unassigned'' entry) is used. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-unassigncheck\fR, \fB\-u\fR Specify unassigned codepoint check should be performed. Unassigned codepoint check is disabled by default. -.br -This option is only meaningful in the normal conversion mode. .TP 4 \fB\-delimiter\fR \fIcodepoint\fP Specify the character to be mapped to domain name delimiter (period). @@ -384,6 +361,10 @@ Force line-buffering mode. \fB\-version\fP, \fB\-v\fP Print version information and quit. .\" +.SH LOCAL CODESET +mdnconv guesses local codeset from locale and environment variables. +See the ``LOCAL CODESET'' section in mdn.conf(5) for more details. +.\" .SH CONVERSION MECHANISM Here is a brief step-by-step description of how .B mdnconv @@ -464,6 +445,14 @@ Perform name preparation (NAMEPREP). This is a following 3-step process. 3) Prohibited/unassigned character checking .fi .RE +.IP "" 4 +When +.B mdnconv +operates in the reverse conversion mode, this process checks that the +given domain name is properly NAMEPREP'ed. If it is not properly +NAMEPREP'ed and the input codeset is an ACE, the domain name is +converted back to the input codeset in the following process, instead +of the output codeset. .IP "6. output-side conversion" 4 Finally, .B mdnconv @@ -472,7 +461,7 @@ And it writes them to stdout together with the rest of the line. .PP If .B mdnconv -operates in the reverse conversion mode, step 3, 4 and 5 above are skipped. +operates in the reverse conversion mode, step 3 and 4 above are skipped. .\" .SH FILE MANAGEMENT Maybe the best way to manage named.conf or zone master files that contains diff --git a/contrib/idn/mdnkit/tools/mdnconv/mdnconv.c b/contrib/idn/mdnkit/tools/mdnconv/mdnconv.c index 3d424b5a..0e75d7ee 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/mdnconv.c +++ b/contrib/idn/mdnkit/tools/mdnconv/mdnconv.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: mdnconv.c,v 1.32 2001/05/18 04:16:28 ishisone Exp $"; +static char *rcsid = "$Id: mdnconv.c,v 1.1 2002/01/02 02:47:02 marka Exp $"; #endif /* @@ -12,8 +12,8 @@ static char *rcsid = "$Id: mdnconv.c,v 1.32 2001/05/18 04:16:28 ishisone Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -256,7 +256,7 @@ main(int ac, char **av) { /* Create resource context. */ resconf = NULL; if ((r = mdn_resconf_create(&resconf)) != mdn_success) { - errormsg("error initilizing configuration parameters\n"); + errormsg("error initializing configuration parameters\n"); return (1); } @@ -278,13 +278,21 @@ main(int ac, char **av) { if (flags & FLAG_REVERSE) { if (in_code != NULL) set_idncode(resconf, in_code); + else + check_defaultidncode(resconf, "-in"); if (out_code != NULL) set_localcode(resconf, out_code); + else + check_defaultlocalcode(resconf, "-out"); } else { if (in_code != NULL) set_localcode(resconf, in_code); + else + check_defaultlocalcode(resconf, "-in"); if (out_code != NULL) set_idncode(resconf, out_code); + else + check_defaultidncode(resconf, "-out"); } /* Set delimiter map(s). */ @@ -355,7 +363,19 @@ convert_file(mdn_resconf_t conf, FILE *fp, int flags) { mdn_converter_destroy(conv); if (flags & FLAG_REVERSE) { - strcpy(insn1, "i"); + char *insnp = insn1; + + *insnp++ = 'i'; + if (flags & FLAG_NAMEPREP) { + *insnp++ = '!'; + *insnp++ = 'N'; + } + if (flags & FLAG_UNASSIGNCHECK) { + *insnp++ = '!'; + *insnp++ = 'u'; + } + *insnp = '\0'; + strcpy(insn2, "L"); } else { char *insnp = insn2; @@ -392,7 +412,7 @@ convert_file(mdn_resconf_t conf, FILE *fp, int flags) { /* * Convert input line to UTF-8. */ - if (ace_hack) { + if (ace_hack && (flags & FLAG_SELECTIVE)) { /* * Selectively decode those portions. */ @@ -418,7 +438,7 @@ convert_file(mdn_resconf_t conf, FILE *fp, int flags) { * Perform local mapping and NAMEPREP, and convert to * the output codeset. */ - if (flags & FLAG_SELECTIVE) { + if (!(flags & FLAG_REVERSE) && (flags & FLAG_SELECTIVE)) { r = selective_encode(conf, insn2, line2, line1, sizeof(line1)); } else { diff --git a/contrib/idn/mdnkit/tools/mdnconv/mdnslookup.in b/contrib/idn/mdnkit/tools/mdnconv/mdnslookup.in new file mode 100644 index 00000000..1b98c135 --- /dev/null +++ b/contrib/idn/mdnkit/tools/mdnconv/mdnslookup.in @@ -0,0 +1,132 @@ +#! /bin/sh +# $Id: mdnslookup.in,v 1.1.2.1 2002/02/08 12:15:25 marka Exp $ +# +# Copyright (c) 2000 Japan Network Information Center. All rights reserved. +# +# By using this file, you agree to the terms and conditions set forth bellow. +# +# LICENSE TERMS AND CONDITIONS +# +# The following License Terms and Conditions apply, unless a different +# license is obtained from Japan Network Information Center ("JPNIC"), +# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, +# Tokyo, Japan. +# +# 1. Use, Modification and Redistribution (including distribution of any +# modified or derived work) in source and/or binary forms is permitted +# under this License Terms and Conditions. +# +# 2. Redistribution of source code must retain the copyright notices as they +# appear in each source code file, this License Terms and Conditions. +# +# 3. Redistribution in binary form must reproduce the Copyright Notice, +# this License Terms and Conditions, in the documentation and/or other +# materials provided with the distribution. For the purposes of binary +# distribution the "Copyright Notice" refers to the following language: +# "Copyright (c) Japan Network Information Center. All rights reserved." +# +# 4. Neither the name of JPNIC may be used to endorse or promote products +# derived from this Software without specific prior written approval of +# JPNIC. +# +# 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR +# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +# +# 6. Indemnification by Licensee +# Any person or entities using and/or redistributing this Software under +# this License Terms and Conditions shall defend indemnify and hold +# harmless JPNIC from and against any and all judgements damages, +# expenses, settlement liabilities, cost and other liabilities of any +# kind as a result of use and redistribution of this Software or any +# claim, suite, action, litigation or proceeding by any third party +# arising out of or relates to this License Terms and Conditions. +# +# 7. Governing Law, Jurisdiction and Venue +# This License Terms and Conditions shall be governed by and and +# construed in accordance with the law of Japan. Any person or entities +# using and/or redistributing this Software under this License Terms and +# Conditions hereby agrees and consent to the personal and exclusive +# jurisdiction and venue of Tokyo District Court of Japan. + +USAGE="Usage: $0 domain-name DNS-server" + +# +# Parse command line arguments. +# +if [ $# -lt 2 ] ; then + echo "$0: too few argument" 1>&2 + echo $USAGE 1>&2 + exit 1 +fi + +if [ $# -gt 2 ] ; then + echo "$0: too many argument" 1>&2 + echo $USAGE 1>&2 + exit 1 +fi + +case "$1" in +-*) echo "$0: unknown option $1" 1>&2 + echo $USAGE 1>&2 + exit 1 + ;; +esac + +LOCAL_DOMAIN_NAME="$1" +NAME_SERVER="$2" + +# +# Append some directories to PATH. +# +[ -d /usr/sbin ] && PATH=$PATH:/usr/sbin +[ -d /sbin ] && PATH=$PATH:/sbin + +# +# Find `nslookup' command. +# +if [ x"$NSLOOKUP" = x ] ; then + for I in `echo $PATH | sed -e 's/:/ /g'` ; do + if [ -x $I/nslookup ] ; then + NSLOOKUP="$I/nslookup" + break + fi + done + if [ "$NSLOOKUP" = "" ] ; then + echo "$0: nslookup not found" 1>&2 + exit 1 + fi +fi +if [ ! -x "$NSLOOKUP" ] ; then + echo "$0: nslookup not found" 1>&2 + exit 1 +fi + +# +# Check if `mdnconv' command exists. +# +MDNCONV=${MDNCONV-"@bindir@/mdnconv"} +if [ ! -x "$MDNCONV" ] ; then + echo "$0: mdnconv not found" 1>&2 + exit 1 +fi + +# +# Convert domain name to IDN encoding. +# +IDN_DOMAIN_NAME="`echo $LOCAL_DOMAIN_NAME | $MDNCONV -w`" || exit 1 + +# +# Invoke nslookup. +# +$NSLOOKUP $IDN_DOMAIN_NAME $NAME_SERVER < /dev/null || exit 1 + +exit 0 diff --git a/contrib/idn/mdnkit/tools/mdnconv/util.c b/contrib/idn/mdnkit/tools/mdnconv/util.c index 08d22f9c..6ffec735 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/util.c +++ b/contrib/idn/mdnkit/tools/mdnconv/util.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: util.c,v 1.17 2001/04/16 02:18:15 m-kasahr Exp $"; +static char *rcsid = "$Id: util.c,v 1.1 2002/01/02 02:47:02 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: util.c,v 1.17 2001/04/16 02:18:15 m-kasahr Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -168,7 +168,7 @@ selective_decode(mdn_resconf_t conf, char *insn, domain_name = NULL; /* - * We ignores a chunk maching to the regular expression: + * We ignore chunks matching to the regular expression: * [\-\.][0-9A-Za-z\-\.]* * * While `*from' points to a character in such a chunk, @@ -247,7 +247,6 @@ selective_decode(mdn_resconf_t conf, char *insn, } to += len; tolen -= len; - } /* @@ -405,6 +404,32 @@ set_unassigned_checkers(mdn_resconf_t conf, char **unassigns, int nunassigns) { } void +check_defaultlocalcode(mdn_resconf_t conf, const char *opt) { + mdn_converter_t conv = mdn_resconf_getlocalconverter(conf); + + if (conv == NULL) { + errormsg("cannot get the default local encoding.\n" + "please specify an appropriate one " + "with `%s' option.\n", opt); + exit(1); + } else + mdn_converter_destroy(conv); +} + +void +check_defaultidncode(mdn_resconf_t conf, const char *opt) { + mdn_converter_t conv = mdn_resconf_getidnconverter(conf); + + if (conv == NULL) { + errormsg("cannot get the default IDN encoding.\n" + "please specify an appropriate one " + "with `%s' option.\n", opt); + exit(1); + } else + mdn_converter_destroy(conv); +} + +void errormsg(const char *fmt, ...) { va_list args; diff --git a/contrib/idn/mdnkit/tools/mdnconv/util.h b/contrib/idn/mdnkit/tools/mdnconv/util.h index 2ec6aa6c..3a86e1fa 100644 --- a/contrib/idn/mdnkit/tools/mdnconv/util.h +++ b/contrib/idn/mdnkit/tools/mdnconv/util.h @@ -1,4 +1,4 @@ -/* $Id: util.h,v 1.7 2001/02/23 10:36:52 m-kasahr Exp $ */ +/* $Id: util.h,v 1.1 2002/01/02 02:47:02 marka Exp $ */ /* * Copyright (c) 2000,2001 Japan Network Information Center. * All rights reserved. @@ -9,8 +9,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -81,5 +81,9 @@ extern void set_prohibit_checkers(mdn_resconf_t conf, extern void set_unassigned_checkers(mdn_resconf_t conf, char **unassigns, int nunassigns); +extern void check_defaultlocalcode(mdn_resconf_t conf, + const char *opt); +extern void check_defaultidncode(mdn_resconf_t conf, + const char *opt); extern void errormsg(const char *fmt, ...); diff --git a/contrib/idn/mdnkit/tools/runmdn/Makefile.in b/contrib/idn/mdnkit/tools/runmdn/Makefile.in index b2c8c660..ea892d0b 100644 --- a/contrib/idn/mdnkit/tools/runmdn/Makefile.in +++ b/contrib/idn/mdnkit/tools/runmdn/Makefile.in @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.32 2001/05/22 03:00:23 m-kasahr Exp $ +# $Id: Makefile.in,v 1.1 2002/01/02 02:47:03 marka Exp $ # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # # By using this file, you agree to the terms and conditions set forth bellow. @@ -7,8 +7,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -55,13 +55,14 @@ # Conditions hereby agrees and consent to the personal and exclusive # jurisdiction and venue of Tokyo District Court of Japan. -LIB_CURRENT=7 -LIB_REVISION=0 -LIB_AGE=0 +LIB_CURRENT = 7 +LIB_REVISION = 3 +LIB_AGE = 0 .SUFFIXES: .lo top_builddir = ../.. +subdir = tools/runmdn srcdir = @srcdir@ VPATH = @srcdir@ @@ -81,9 +82,12 @@ MKINSTALLDIRS = @top_srcdir@/mkinstalldirs SHELL = @SHELL@ LIBTOOL = @LIBTOOL@ +ICONVINC = @ICONVINC@ +ICONVLIB = @ICONVLIB@ + OPTS = -INCS = -I$(srcdir)/../../include -I../../include -DEFS = +INCS = -I$(srcdir)/../../include -I../../include $(ICONVINC) +DEFS = CFLAGS = $(INCS) $(OPTS) $(DEFS) @CFLAGS@ LDFLAGS = @LDFLAGS@ @@ -99,6 +103,9 @@ MDNOBJS = \ $(MDNDIR)/amcacem.lo \ $(MDNDIR)/amcaceo.lo \ $(MDNDIR)/amcacer.lo \ + $(MDNDIR)/amcacev.lo \ + $(MDNDIR)/amcacew.lo \ + $(MDNDIR)/amcacez.lo \ $(MDNDIR)/api.lo \ $(MDNDIR)/brace.lo \ $(MDNDIR)/checker.lo \ @@ -112,6 +119,7 @@ MDNOBJS = \ $(MDNDIR)/lace.lo \ $(MDNDIR)/localencoding.lo \ $(MDNDIR)/log.lo \ + $(MDNDIR)/mace.lo \ $(MDNDIR)/mapper.lo \ $(MDNDIR)/mapselector.lo \ $(MDNDIR)/nameprep.lo \ @@ -131,12 +139,10 @@ MDNOBJS = \ $(MDNDIR)/util.lo \ $(MDNDIR)/version.lo -ICONVLIB = @ICONVLIB@ - .c.lo: $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $< -all: $(LIB).la +all: $(LIB).la runmdn rtresolver.lo: $(srcdir)/resolver.c $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -DFOR_RUNMDN -o $@ \ @@ -147,6 +153,11 @@ $(LIB).la: $(OBJS) -version-info $(LIB_CURRENT):$(LIB_REVISION):$(LIB_AGE) \ -module -rpath $(libdir) $(OBJS) $(LIBDL) +runmdn: $(srcdir)/runmdn.in + cd $(top_builddir) && \ + CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= CONFIG_LINKS= \ + $(SHELL) ./config.status + install: install-lib install-script install-man install-script: diff --git a/contrib/idn/mdnkit/tools/runmdn/resolver.c b/contrib/idn/mdnkit/tools/runmdn/resolver.c index e545218a..738d402a 100644 --- a/contrib/idn/mdnkit/tools/runmdn/resolver.c +++ b/contrib/idn/mdnkit/tools/runmdn/resolver.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: resolver.c,v 1.1 2001/06/09 00:30:50 tale Exp $"; +static char *rcsid = "$Id: resolver.c,v 1.1.2.1 2002/02/08 12:15:33 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: resolver.c,v 1.1 2001/06/09 00:30:50 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -593,7 +593,7 @@ ENTRY(gethostbyname2)(const char *name, int af) { #ifdef HAVE_GETHOSTBYADDR struct hostent * -ENTRY(gethostbyaddr)(const char *addr, GHBA_ADDRLEN_T len, int type) { +ENTRY(gethostbyaddr)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type) { static hostbuf_t buf; static struct hostent he; struct hostent *hp; @@ -727,7 +727,7 @@ ENTRY(gethostbyname2_r)(const char *name, int af, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR_R int -ENTRY(gethostbyaddr_r)(const char *addr, GHBA_ADDRLEN_T len, int type, +ENTRY(gethostbyaddr_r)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, size_t buflen, struct hostent **rp, int *errp) @@ -830,7 +830,7 @@ ENTRY(gethostbyname_r)(const char *name, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR_R struct hostent * -ENTRY(gethostbyaddr_r)(const char *addr, GHBA_ADDRLEN_T len, int type, +ENTRY(gethostbyaddr_r)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, int buflen, int *errp) { @@ -1009,9 +1009,9 @@ ENTRY(freeaddrinfo)(struct addrinfo *aip) { #ifdef HAVE_GETNAMEINFO int -ENTRY(getnameinfo)(const struct sockaddr *sa, socklen_t salen, - char *host, size_t hostlen, char *serv, size_t servlen, - int flags) +ENTRY(getnameinfo)(const struct sockaddr *sa, GNI_SALEN_T salen, + char *host, GNI_HOSTLEN_T hostlen, char *serv, + GNI_SERVLEN_T servlen, GNI_FLAGS_T flags) { char name[MDN_NAME_SIZE]; size_t namelen = sizeof(name); diff --git a/contrib/idn/mdnkit/tools/runmdn/runmdn.1 b/contrib/idn/mdnkit/tools/runmdn/runmdn.1 index c21c32ac..8fc0bb3f 100644 --- a/contrib/idn/mdnkit/tools/runmdn/runmdn.1 +++ b/contrib/idn/mdnkit/tools/runmdn/runmdn.1 @@ -1,4 +1,4 @@ -.\" $Id: runmdn.1,v 1.7 2001/04/23 05:56:27 ishisone Exp $ +.\" $Id: runmdn.1,v 1.1 2002/01/02 02:47:04 marka Exp $ .\" .\" Copyright (c) 2000,2001 Japan Network Information Center. .\" All rights reserved. @@ -9,8 +9,8 @@ .\" .\" The following License Terms and Conditions apply, unless a different .\" license is obtained from Japan Network Information Center ("JPNIC"), -.\" a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -.\" Tokyo, Japan. +.\" a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +.\" Chiyoda-ku, Tokyo 101-0047, Japan. .\" .\" 1. Use, Modification and Redistribution (including distribution of any .\" modified or derived work) in source and/or binary forms is permitted @@ -63,7 +63,7 @@ runmdn \- A script to allow applications to use multilingual domain names. .\" .SH SYNOPSIS -\fBrunmdn\fP \fIprogram-name\fP [\fIargs..\fP] +\fBrunmdn\fP [\fB-e\fP \fIlocal-codeset\fP] \fIprogram-name\fP [\fIargs..\fP] .\" .SH DESCRIPTION .B runmdn @@ -82,6 +82,16 @@ multilingual DNS by configuring mDNkit's configuration file \fBmdn.conf\fP. See mdn.conf(5) which describes the configuration. .\" +.SH OPTION +The following option is available: +.TP 4 +\fB\-e\fP \fIlocal-codeset\fP +Specify the application's local codeset. +If the option is not specified, +.B runmdn +guesses the codeset from the current locale. +See the ``NOTE'' section for more details about local codeset. +.\" .SH IMPLEMENTATION .B runmdn is a small shell script that sets up an environment variable called @@ -135,10 +145,13 @@ configuration file ( ). See mdn.conf(5) for details. .\" .SH NOTE -By default, +Unless +\fB\-e\fP +option is specified, .B runmdn tries to guess the application's local codeset from the application's current -locale. However, sometimes it cannot guess the codeset correctly, for example +locale. +However, sometimes it cannot guess the codeset correctly, for example if the application does not set the locale appropriately by calling `setlocale()'. In that case, you can explicitly specify the local codeset by setting an diff --git a/contrib/idn/mdnkit/tools/runmdn/runmdn.in b/contrib/idn/mdnkit/tools/runmdn/runmdn.in index 11d04f78..81e0f520 100644 --- a/contrib/idn/mdnkit/tools/runmdn/runmdn.in +++ b/contrib/idn/mdnkit/tools/runmdn/runmdn.in @@ -1,5 +1,5 @@ #! /bin/sh -# $Id: runmdn.in,v 1.8 2000/09/28 01:37:22 ishisone Exp $ +# $Id: runmdn.in,v 1.1 2002/01/02 02:47:04 marka Exp $ # # Copyright (c) 2000 Japan Network Information Center. All rights reserved. # @@ -57,14 +57,44 @@ # Conditions hereby agrees and consent to the personal and exclusive # jurisdiction and venue of Tokyo District Court of Japan. -preload= +# Parse command line options. +usage="Usage: `basename $0` [-e local-encoding] command [argument..]" +while test $# -gt 0; do + case "$1" in + -e) + if test $# -le 1; then + echo $usage 1>&2 + exit 1 + fi + MDN_LOCAL_CODESET="$2" + export MDN_LOCAL_CODESET + shift + ;; + -) + break + ;; + -*) + echo $usage 1>&2 + exit 1 + ;; + *) + break + ;; + esac + shift +done +if test $# -eq 0; then + echo $usage 1>&2 + exit 1 +fi +# Load library info. +preload= iconv_file=@ICONVSOFILE@ if test "$iconv_file" != none; then preload="$iconv_file@PRELOAD_SEP@" fi -# Load library info. prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=`echo @libdir@` diff --git a/contrib/idn/mdnkit/tools/runmdn/stub.c b/contrib/idn/mdnkit/tools/runmdn/stub.c index 5264f612..89ce763b 100644 --- a/contrib/idn/mdnkit/tools/runmdn/stub.c +++ b/contrib/idn/mdnkit/tools/runmdn/stub.c @@ -1,5 +1,5 @@ #ifndef lint -static char *rcsid = "$Id: stub.c,v 1.1 2001/06/09 00:30:51 tale Exp $"; +static char *rcsid = "$Id: stub.c,v 1.1.2.1 2002/02/08 12:15:38 marka Exp $"; #endif /* @@ -11,8 +11,8 @@ static char *rcsid = "$Id: stub.c,v 1.1 2001/06/09 00:30:51 tale Exp $"; * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted @@ -195,8 +195,8 @@ mdn_stub_gethostbyname2(const char *name, int af) { #ifdef HAVE_GETHOSTBYADDR struct hostent * -mdn_stub_gethostbyaddr(const char *addr, GHBA_ADDRLEN_T len, int type) { - static struct hostent *(*fp)(const char *name, +mdn_stub_gethostbyaddr(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type) { + static struct hostent *(*fp)(GHBA_ADDR_T name, GHBA_ADDRLEN_T len, int type); if (fp == NULL) @@ -247,11 +247,11 @@ mdn_stub_gethostbyname2_r(const char *name, int af, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR_R int -mdn_stub_gethostbyaddr_r(const char *addr, GHBA_ADDRLEN_T len, int type, +mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, size_t buflen, struct hostent **rp, int *errp) { - static int (*fp)(const char *addr, GHBA_ADDRLEN_T len, int type, + static int (*fp)(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, size_t buflen, struct hostent **rp, int *errp); @@ -284,11 +284,11 @@ mdn_stub_gethostbyname_r(const char *name, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR_R struct hostent * -mdn_stub_gethostbyaddr_r(const char *addr, int len, int type, +mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, int len, int type, struct hostent *result, char *buffer, int buflen, int *errp) { - static struct hostent *(*fp)(const char *addr, int len, int type, + static struct hostent *(*fp)(GHBA_ADDR_T addr, int len, int type, struct hostent *result, char *buffer, int buflen, int *errp); @@ -372,14 +372,13 @@ mdn_stub_freeaddrinfo(struct addrinfo *aip) { #ifdef HAVE_GETNAMEINFO int -mdn_stub_getnameinfo(const struct sockaddr *sa, socklen_t salen, - char *host, size_t hostlen, char *serv, size_t servlen, - int flags) -{ - static int (*fp)(const struct sockaddr *sa, socklen_t salen, - char *host, size_t hostlen, - char *serv, size_t servlen, - int flags); +mdn_stub_getnameinfo(const struct sockaddr *sa, GNI_SALEN_T salen, + char *host, GNI_HOSTLEN_T hostlen, + char *serv, GNI_SERVLEN_T servlen, GNI_FLAGS_T flags) { + static int (*fp)(const struct sockaddr *sa, GNI_SALEN_T salen, + char *host, GNI_HOSTLEN_T hostlen, + char *serv, GNI_SERVLEN_T servlen, + GNI_FLAGS_T flags); if (fp == NULL) fp = get_func_addr("getnameinfo"); diff --git a/contrib/idn/mdnkit/tools/runmdn/stub.h b/contrib/idn/mdnkit/tools/runmdn/stub.h index ffe41771..5178a983 100644 --- a/contrib/idn/mdnkit/tools/runmdn/stub.h +++ b/contrib/idn/mdnkit/tools/runmdn/stub.h @@ -1,4 +1,4 @@ -/* $Id: stub.h,v 1.1 2001/06/09 00:30:51 tale Exp $ */ +/* $Id: stub.h,v 1.1.2.1 2002/02/08 12:15:40 marka Exp $ */ #ifndef STUB_H #define STUB_H @@ -39,20 +39,20 @@ mdn_stub_gethostbyname2_r(const char *name, int af, struct hostent *result, #ifdef HAVE_GETHOSTBYADDR extern struct hostent * -mdn_stub_gethostbyaddr(const char *addr, GHBA_ADDRLEN_T len, int type); +mdn_stub_gethostbyaddr(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type); #endif #ifdef GETHOST_R_GLIBC_FLAVOR #ifdef HAVE_GETHOSTBYADDR_R extern int -mdn_stub_gethostbyaddr_r(const char *addr, GHBA_ADDRLEN_T len, int type, +mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, size_t buflen, struct hostent **rp, int *errp); #endif #else /* GETHOST_R_GLIBC_FLAVOR */ #ifdef HAVE_GETHOSTBYADDR_R extern struct hostent * -mdn_stub_gethostbyaddr_r(const char *addr, GHBA_ADDRLEN_T len, int type, +mdn_stub_gethostbyaddr_r(GHBA_ADDR_T addr, GHBA_ADDRLEN_T len, int type, struct hostent *result, char *buffer, int buflen, int *errp); #endif @@ -86,9 +86,9 @@ mdn_stub_freeaddrinfo(struct addrinfo *aip); #ifdef HAVE_GETNAMEINFO extern int -mdn_stub_getnameinfo(const struct sockaddr *sa, socklen_t salen, - char *host, size_t hostlen, char *serv, size_t servlen, - int flags); +mdn_stub_getnameinfo(const struct sockaddr *sa, GNI_SALEN_T salen, + char *host, GNI_HOSTLEN_T hostlen, char *serv, + GNI_SERVLEN_T servlen, GNI_FLAGS_T flags); #endif #endif /* STUB_H */ diff --git a/contrib/idn/mdnkit/util/SparseMap.pm b/contrib/idn/mdnkit/util/SparseMap.pm index 94742ab5..7b22db4f 100644 --- a/contrib/idn/mdnkit/util/SparseMap.pm +++ b/contrib/idn/mdnkit/util/SparseMap.pm @@ -1,4 +1,4 @@ -# $Id: SparseMap.pm,v 1.1 2001/06/09 00:30:51 tale Exp $ +# $Id: SparseMap.pm,v 1.1.2.1 2002/02/08 12:15:42 marka Exp $ # # Copyright (c) 2001 Japan Network Information Center. All rights reserved. # @@ -8,8 +8,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is under this @@ -220,7 +220,7 @@ sub cprog_imap { $idcol = 4; $idwid = 10; } - $prog = "static unsigned $idtype ${name}_imap[] = {\n"; + $prog = "static const unsigned $idtype ${name}_imap[] = {\n"; $i = 0; foreach my $v (@indirect) { if ($i % $idcol == 0) { @@ -426,7 +426,7 @@ sub cprog_dmap { my $bmsize = 1 << ($self->{BITS}->[-1] - 3); $prog = <<"END"; -static struct { +static const struct { unsigned char bm[$bmsize]; } ${name}_bitmap[] = { END @@ -541,7 +541,7 @@ sub cprog_dmap { $idwid = decimalwidth($min) if decimalwidth($min) > $idwid; $prog = <<"END"; -static struct { +static const struct { $idtype tbl[$tblsize]; } ${name}_table[] = { END diff --git a/contrib/idn/mdnkit/util/UCD.pm b/contrib/idn/mdnkit/util/UCD.pm index 63075547..9219c108 100644 --- a/contrib/idn/mdnkit/util/UCD.pm +++ b/contrib/idn/mdnkit/util/UCD.pm @@ -1,4 +1,4 @@ -# $Id: UCD.pm,v 1.1 2001/06/09 00:30:51 tale Exp $ +# $Id: UCD.pm,v 1.1.2.1 2002/02/08 12:15:43 marka Exp $ # # Copyright (c) 2000,2001 Japan Network Information Center. # All rights reserved. @@ -9,8 +9,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is under this diff --git a/contrib/idn/mdnkit/util/generate_nameprep_data.pl b/contrib/idn/mdnkit/util/generate_nameprep_data.pl index 96165b4f..0dac823d 100755 --- a/contrib/idn/mdnkit/util/generate_nameprep_data.pl +++ b/contrib/idn/mdnkit/util/generate_nameprep_data.pl @@ -1,5 +1,5 @@ #! /usr/local/bin/perl -w -# $Id: generate_nameprep_data.pl,v 1.1 2001/06/09 00:30:51 tale Exp $ +# $Id: generate_nameprep_data.pl,v 1.1.2.1 2002/02/08 12:15:46 marka Exp $ # # Copyright (c) 2001 Japan Network Information Center. All rights reserved. # @@ -9,8 +9,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is under this @@ -59,13 +59,14 @@ # use v5.6.0; # for pack('U') +use bytes; use lib qw(.); use SparseMap; use Getopt::Long; -(my $myid = '$Id: generate_nameprep_data.pl,v 1.1 2001/06/09 00:30:51 tale Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/; +(my $myid = '$Id: generate_nameprep_data.pl,v 1.1.2.1 2002/02/08 12:15:46 marka Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/; my @map_bits = (9, 7, 5); my @proh_bits = (7, 7, 7); @@ -229,7 +230,7 @@ sub generate_map { $map->fix(); print $map->cprog(NAME => "nameprep_${version}_map"); - print "\nstatic unsigned char nameprep_${version}_map_data[] = \{\n"; + print "\nstatic const unsigned char nameprep_${version}_map_data[] = \{\n"; print_uchararray($$bufref); print "};\n\n"; } diff --git a/contrib/idn/mdnkit/util/generate_normalize_data.pl b/contrib/idn/mdnkit/util/generate_normalize_data.pl index 27d78452..bfb5b8a4 100755 --- a/contrib/idn/mdnkit/util/generate_normalize_data.pl +++ b/contrib/idn/mdnkit/util/generate_normalize_data.pl @@ -1,5 +1,5 @@ #! /usr/local/bin/perl -w -# $Id: generate_normalize_data.pl,v 1.5 2001/02/13 07:34:02 ishisone Exp $ +# $Id: generate_normalize_data.pl,v 1.1 2002/01/02 02:47:06 marka Exp $ # # Copyright (c) 2000,2001 Japan Network Information Center. # All rights reserved. @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is under this @@ -84,7 +84,7 @@ my $CASEMAP_LAST_BIT = 0x10; my $LETTER_BIT = 1; my $NSPMARK_BIT = 2; -(my $myid = '$Id: generate_normalize_data.pl,v 1.5 2001/02/13 07:34:02 ishisone Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/; +(my $myid = '$Id: generate_normalize_data.pl,v 1.1 2002/01/02 02:47:06 marka Exp $') =~ s/\$([^\$]+)\$/\$-$1-\$/; my @default_bits = (9, 7, 5); #my @default_bits = (7, 7, 7); @@ -95,9 +95,10 @@ my @folding_bits = @default_bits; my @casemap_bits = @default_bits; my @casemap_ctx_bits = @default_bits; +my $prefix = ''; my $dir = '.'; my $unicodedatafile = 'UnicodeData.txt'; -my $exclusionfile = 'CompositionExclusions-1.txt'; +my $exclusionfile = 'CompositionExclusions.txt'; my $specialcasefile = 'SpecialCasing.txt'; my $casefoldingfile = 'CaseFolding.txt'; my $verbose; @@ -107,6 +108,7 @@ GetOptions('dir|d=s' => \$dir, 'exclude|e=s' => \$exclusionfile, 'specialcase|s=s' => \$specialcasefile, 'casefold|c=s' => \$casefoldingfile, + 'prefix|p=s' => \$prefix, 'verbose|v' => \$verbose, ) or usage(); @@ -415,7 +417,7 @@ sub print_canon_class { END print_bits("CANON_CLASS", @canon_class_bits); print "\n"; - print $canon_class->cprog(NAME => "canon_class"); + print $canon_class->cprog(NAME => "${prefix}canon_class"); } # @@ -434,13 +436,10 @@ sub print_composition { END print_bits("CANON_COMPOSE", @comp_bits); print "\n"; - print $comp->cprog(NAME => "compose"); + print $comp->cprog(NAME => "${prefix}compose"); print <<"END"; -static struct composition { - unsigned long c2; /* 2nd character */ - unsigned long comp; /* composed character */ -} compose_seq[] = { +static const struct composition ${prefix}compose_seq[] = { END my $i = 0; foreach my $r (@comp_data) { @@ -472,9 +471,9 @@ END print_bits("DECOMP", @decomp_bits); print "#define DECOMP_COMPAT\t$DECOMP_COMPAT_BIT\n\n"; - print $decomp->cprog(NAME => "decompose"); + print $decomp->cprog(NAME => "${prefix}decompose"); - print "static unsigned long decompose_seq[] = {\n"; + print "static const unsigned long ${prefix}decompose_seq[] = {\n"; print_ulseq(@decomp_data); print "};\n\n"; } @@ -505,14 +504,14 @@ sub print_casemap { END print_bits("CASEMAP", @casemap_bits); print "\n"; - print $upper->cprog(NAME => "toupper"); - print $lower->cprog(NAME => "tolower"); + print $upper->cprog(NAME => "${prefix}toupper"); + print $lower->cprog(NAME => "${prefix}tolower"); - print "static unsigned long toupper_seq[] = {\n"; + print "static const unsigned long ${prefix}toupper_seq[] = {\n"; print_ulseq(@toupper_data); print "};\n\n"; - print "static unsigned long tolower_seq[] = {\n"; + print "static const unsigned long ${prefix}tolower_seq[] = {\n"; print_ulseq(@tolower_data); print "};\n\n"; } @@ -533,9 +532,9 @@ sub print_casefolding { END print_bits("CASE_FOLDING", @folding_bits); print "\n"; - print $folding->cprog(NAME => "case_folding"); + print $folding->cprog(NAME => "${prefix}case_folding"); - print "static unsigned long case_folding_seq[] = {\n"; + print "static const unsigned long ${prefix}case_folding_seq[] = {\n"; print_ulseq(@folding_data); print "};\n\n"; } @@ -563,7 +562,7 @@ END #define CTX_NSM $NSPMARK_BIT END - print $casemap_ctx->cprog(NAME => "casemap_ctx"); + print $casemap_ctx->cprog(NAME => "${prefix}casemap_ctx"); } sub sprint_composition_hash { diff --git a/contrib/idn/mdnkit/win/README.WIN b/contrib/idn/mdnkit/win/README.WIN index 663bcaa8..946d4758 100644 --- a/contrib/idn/mdnkit/win/README.WIN +++ b/contrib/idn/mdnkit/win/README.WIN @@ -21,4 +21,4 @@ Then go to the top directory and run the following command to compile On Windows NT you can run 'mdnsproxy' as a service, while on Windows 95/98 'mdnsproxy' can be run but not as a service. -; $Id: README.WIN,v 1.1 2001/06/09 00:30:53 tale Exp $ +; $Id: README.WIN,v 1.1.2.1 2002/02/08 12:15:50 marka Exp $ diff --git a/contrib/idn/mdnkit/wsock/common/checkdll.c b/contrib/idn/mdnkit/wsock/common/checkdll.c index 1f267ebb..5b3fd74a 100644 --- a/contrib/idn/mdnkit/wsock/common/checkdll.c +++ b/contrib/idn/mdnkit/wsock/common/checkdll.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/convert.c b/contrib/idn/mdnkit/wsock/common/convert.c index f4e565eb..257e7a7b 100644 --- a/contrib/idn/mdnkit/wsock/common/convert.c +++ b/contrib/idn/mdnkit/wsock/common/convert.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/dllmain.c b/contrib/idn/mdnkit/wsock/common/dllmain.c index c81f013f..d888e00a 100644 --- a/contrib/idn/mdnkit/wsock/common/dllmain.c +++ b/contrib/idn/mdnkit/wsock/common/dllmain.c @@ -17,8 +17,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/dump.c b/contrib/idn/mdnkit/wsock/common/dump.c index 94086ad7..7ef92273 100644 --- a/contrib/idn/mdnkit/wsock/common/dump.c +++ b/contrib/idn/mdnkit/wsock/common/dump.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/encoding.c b/contrib/idn/mdnkit/wsock/common/encoding.c index 92082e12..fef6ea6b 100644 --- a/contrib/idn/mdnkit/wsock/common/encoding.c +++ b/contrib/idn/mdnkit/wsock/common/encoding.c @@ -19,8 +19,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/hook.c b/contrib/idn/mdnkit/wsock/common/hook.c index 9cf09567..80f6b3fc 100644 --- a/contrib/idn/mdnkit/wsock/common/hook.c +++ b/contrib/idn/mdnkit/wsock/common/hook.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/jpnicmdn.h b/contrib/idn/mdnkit/wsock/common/jpnicmdn.h index 63ea9b23..fe781921 100644 --- a/contrib/idn/mdnkit/wsock/common/jpnicmdn.h +++ b/contrib/idn/mdnkit/wsock/common/jpnicmdn.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/make.wnt b/contrib/idn/mdnkit/wsock/common/make.wnt index 17b0a107..26005080 100644 --- a/contrib/idn/mdnkit/wsock/common/make.wnt +++ b/contrib/idn/mdnkit/wsock/common/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/common/printf.c b/contrib/idn/mdnkit/wsock/common/printf.c index 6c711a70..1a12d8a7 100644 --- a/contrib/idn/mdnkit/wsock/common/printf.c +++ b/contrib/idn/mdnkit/wsock/common/printf.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/config/make.wnt b/contrib/idn/mdnkit/wsock/config/make.wnt index dd6e6369..0969cf02 100644 --- a/contrib/idn/mdnkit/wsock/config/make.wnt +++ b/contrib/idn/mdnkit/wsock/config/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/config/mdnconf.tcl b/contrib/idn/mdnkit/wsock/config/mdnconf.tcl index 068aa16f..08abfbee 100644 --- a/contrib/idn/mdnkit/wsock/config/mdnconf.tcl +++ b/contrib/idn/mdnkit/wsock/config/mdnconf.tcl @@ -1,4 +1,4 @@ -# $Id: mdnconf.tcl,v 1.1 2001/06/09 00:30:55 tale Exp $ +# $Id: mdnconf.tcl,v 1.1.2.1 2002/02/08 12:16:11 marka Exp $ # # mdnconf.tcl - configure mDN Wrapper # @@ -12,8 +12,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted @@ -66,7 +66,7 @@ global registryKey registryEnc registryDef global filesCpy filesRen filesDel # mDNkit version -set version "2.1" +set version "2.2.2" set configFile "mdnconf.lst" ;# list of wrapped program set configBack "mdnconf.bak" ;# backup of previous data diff --git a/contrib/idn/mdnkit/wsock/make.wnt b/contrib/idn/mdnkit/wsock/make.wnt index 9608722c..71855af2 100644 --- a/contrib/idn/mdnkit/wsock/make.wnt +++ b/contrib/idn/mdnkit/wsock/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dlldef.h b/contrib/idn/mdnkit/wsock/wsock11/dlldef.h index b66989ec..14fa633e 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dlldef.h +++ b/contrib/idn/mdnkit/wsock/wsock11/dlldef.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dllfunc.c b/contrib/idn/mdnkit/wsock/wsock11/dllfunc.c index d5c7a576..b4755b22 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dllfunc.c +++ b/contrib/idn/mdnkit/wsock/wsock11/dllfunc.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dllload.c b/contrib/idn/mdnkit/wsock/wsock11/dllload.c index f01c20e1..929b1890 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dllload.c +++ b/contrib/idn/mdnkit/wsock/wsock11/dllload.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dllmain.c b/contrib/idn/mdnkit/wsock/wsock11/dllmain.c index 5665b69f..9ef58006 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dllmain.c +++ b/contrib/idn/mdnkit/wsock/wsock11/dllmain.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock11/dllstub.c b/contrib/idn/mdnkit/wsock/wsock11/dllstub.c index 6fa21a1b..d935c4ee 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/dllstub.c +++ b/contrib/idn/mdnkit/wsock/wsock11/dllstub.c @@ -1,4 +1,4 @@ -/* $Id: dllstub.c,v 1.1 2001/06/09 00:30:55 tale Exp $ */ +/* $Id: dllstub.c,v 1.1.2.1 2002/02/08 12:16:21 marka Exp $ */ SOCKET PASCAL accept(SOCKET a0, struct sockaddr* a1, int* a2) diff --git a/contrib/idn/mdnkit/wsock/wsock11/make.wnt b/contrib/idn/mdnkit/wsock/wsock11/make.wnt index b634603c..ddabc122 100644 --- a/contrib/idn/mdnkit/wsock/wsock11/make.wnt +++ b/contrib/idn/mdnkit/wsock/wsock11/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dlldef.h b/contrib/idn/mdnkit/wsock/wsock20/dlldef.h index 4c7496f4..17bd7472 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dlldef.h +++ b/contrib/idn/mdnkit/wsock/wsock20/dlldef.h @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dllfunc.c b/contrib/idn/mdnkit/wsock/wsock20/dllfunc.c index bb3fd1c6..3d794b2f 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dllfunc.c +++ b/contrib/idn/mdnkit/wsock/wsock20/dllfunc.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dllload.c b/contrib/idn/mdnkit/wsock/wsock20/dllload.c index 7846c8c8..9e12d9df 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dllload.c +++ b/contrib/idn/mdnkit/wsock/wsock20/dllload.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dllmain.c b/contrib/idn/mdnkit/wsock/wsock20/dllmain.c index be0595bf..0fd3a4bd 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dllmain.c +++ b/contrib/idn/mdnkit/wsock/wsock20/dllmain.c @@ -11,8 +11,8 @@ * * The following License Terms and Conditions apply, unless a different * license is obtained from Japan Network Information Center ("JPNIC"), - * a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, - * Tokyo, Japan. + * a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, + * Chiyoda-ku, Tokyo 101-0047, Japan. * * 1. Use, Modification and Redistribution (including distribution of any * modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/idn/mdnkit/wsock/wsock20/dllstub.c b/contrib/idn/mdnkit/wsock/wsock20/dllstub.c index b1d99675..16bd8ec0 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/dllstub.c +++ b/contrib/idn/mdnkit/wsock/wsock20/dllstub.c @@ -1,4 +1,4 @@ -/* $Id: dllstub.c,v 1.1 2001/06/09 00:30:55 tale Exp $ */ +/* $Id: dllstub.c,v 1.1.2.1 2002/02/08 12:16:30 marka Exp $ */ SOCKET PASCAL accept(SOCKET a0, struct sockaddr* a1, int* a2) diff --git a/contrib/idn/mdnkit/wsock/wsock20/make.wnt b/contrib/idn/mdnkit/wsock/wsock20/make.wnt index 2c2a6e1b..e9d8985a 100644 --- a/contrib/idn/mdnkit/wsock/wsock20/make.wnt +++ b/contrib/idn/mdnkit/wsock/wsock20/make.wnt @@ -10,8 +10,8 @@ # # The following License Terms and Conditions apply, unless a different # license is obtained from Japan Network Information Center ("JPNIC"), -# a Japanese association, Fuundo Bldg., 1-2 Kanda Ogawamachi, Chiyoda-ku, -# Tokyo, Japan. +# a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda, +# Chiyoda-ku, Tokyo 101-0047, Japan. # # 1. Use, Modification and Redistribution (including distribution of any # modified or derived work) in source and/or binary forms is permitted diff --git a/contrib/nslint-2.1a3/CHANGES b/contrib/nslint-2.1a3/CHANGES new file mode 100644 index 00000000..c425e017 --- /dev/null +++ b/contrib/nslint-2.1a3/CHANGES @@ -0,0 +1,191 @@ +@(#) $Id: CHANGES,v 1.1 2001/12/21 04:12:02 marka Exp $ (LBL) + +v2.1 Wed Aug 22 18:30:35 PDT 2001 + +- Handle "srv" records. + +- Fix some ttl parsing problems. + +- Add "ignore" option + +v2.0.2 Tue Mar 20 17:49:13 PST 2001 + +- Allow missing trailing dot in certain special cases. + +- Include zone names when checking NS records. + +- Document nslint.conf network keyword. + +v2.0.1 Tue Dec 14 11:24:31 PST 1999 + +- Handle $ttl. + +- Fix some minor portability/compiler problems for OSF 4. + +- Correctly detect mx records that point to themselves but not a + real "a" record. + +- Fix file descriptor leak in doconf(). Thanks to Paul McIlfatrick + (paul.mcilfatrick@bt.com) + +v2.0 Wed Dec 9 16:48:54 PST 1998 + +- Add support for BIND 8 named.conf file. + +- Support protocols in addition to tcp and udp for WKS records. + Resulted from a bug report from Petter Reinholdtsen (pere@td.org.uit.no) + +- Support dotted serial numbers in SOA records. Resulted from a + bug report from Frank Ederveen (frank@our.domaintje.com) + +- Ignore unknown statements and options in named.boot and named.conf + (instead of issuing warnings). + +- Handle '#' and C style named.conf comments. + +- Handle optional "in" in named.conf zone statements. Reported by + DJ Coster (djc@discoverbrokerage.com) + +- Add support for include directives in named.boot and named.conf. + +- Redo differing ttls check and do mx records in addition to a + records. Change place where soa values gets zeroed so they don't + get clobbered when we use includes. + +- Allow "@" abbr. for ptr, mx, cname and ns records. + +- Detect cname referenced by another cname or mx record. + +- Handle chaos records (to some minor extent). + +v1.7 Tue Jul 22 14:26:21 PDT 1997 + +- Report differing ttls in A records. Check SOA records. + +- Detect hosts with more than one ip address on a subnet. + +v1.6.1 Sat Jun 7 03:12:01 PDT 1997 + +- Fix "unknown service" printf format. + +- Fix off-by-one error in the ptr parsing code. Thanks to Andreas + Lamprecht (andreas.lamprecht@siemens.at) + +- Fix broken $origin code. + +v1.6 Mon Apr 7 19:09:52 PDT 1997 + +- Add support for classless delegation. + +- Fix some case sensitive bugs. + +- Report domain names outside the current zone. + +- Fixed off-by-one bug that broke single character hostnames. + +- Increase size of hash table. + +- Make tcp and udp service name tables dynamic. + +- Improved error message for garbage in /etc/services. + +v1.5.1 Thu Jul 18 21:44:44 PDT 1996 + +- Use $CC when checking gcc version. Thanks to Carl Lindberg + (carl_lindberg@blacksmith.com) + +- Raise size of hash table to 65K. + +v1.5 Fri Jul 12 18:58:47 PDT 1996 + +- Detect extra octets and other garbage in PTR records. + +- Handle multi-line WKS records. + +- Allow multple WKS records (since we can have udp and tcp). + +- Convert to autoconf. + +- Declare optarg, optind and opterr extern. Thanks to Howard Moftich + (howardm@lsil.com). + +- BS/DOS does not have malloc.h. Thanks to Jordan Hayes + (jordan@thinkbank.com). + +- Correctly handle named.boot comments with leading whitespace. + +- Handle fully specified in-addr.arpa records. Resulted from a bug + report from Joe Kelly (joe@gol.com). + +- Fix endian problems. Thanks to Carl Lindberg (carl_lindberg@blacksmith.com). + +- Fixed some mixed case problems. + +- Update man page to describe how nslint.boot works. + +v1.4 Sat Jun 3 23:38:14 PDT 1995 + +- Allow TXT records to exist with no other records. + +- Full system prototypes. + +- Complain about extra arguments. + +- Detect MX record chains. + +- Handle single line SOA records correctly. Thanks to Edward J. O'Brien + (ejobrie@sam.wal-mart.com) + +v1.3 Wed Mar 8 17:27:20 PST 1995 + +- Add "allowdupa" record type for use with nslint.boot. This allows ip + addresses to have multiple A records. + +- Fixed bug that caused dangling cname references to not be reported + properly. Thanks to Edward J. O'Brien (ejobrie@sam.wal-mart.com). + +v1.2 Thu Sep 1 15:55:38 PDT 1994 + +- Allow hostnames with a leading numeric as per rfc1123. Thanks to Bill + Gianopoulos (wag@sccux1.msd.ray.com). + +- Remove (undocumented) -u flag and allow uppercase. + +- Support TXT records. Thanks to Paul Pomes (paul@uxc.cso.uiuc.edu). + +- Support RP records. + +- Ignore new bind keywords. + +- Fix bug where we could exit with a zero status even though errors had + been detected + +- Complain about hosts that have smtp/tcp WKS entries but no MX records. + +- Add -B flag to handle PTR records that point outside the domains + listed in named.boot. + +v1.1 Sun May 22 20:43:03 PDT 1994 + +- Allow ns records with no a records (the preferred way to go). + +- Fix typos in the sawstr array. + +- Use string.h instead of strings.h and add rindex(), index() and + bzero() macros for SYSV compatibility. Thanks to Bill King + (wrk@cle.ab.com). + +- Handle $origin directives. Thanks to Bill Gianopoulos + (wag@sccux1.msd.ray.com). + +- Fix add_domain() to work for the root. Thanks to Bill Gianopoulos. + +- Handle quotes in hinfo records. Thanks to Bill Gianopoulos. + +- Fix endian problems in parseinaddr() and parseptr(). + +- Check non in-addr.arpa names for cname conflicts. + +v1.0 Thu Apr 21 11:02:59 PDT 1994 + +- Initial release. diff --git a/contrib/nslint-2.1a3/FILES b/contrib/nslint-2.1a3/FILES new file mode 100644 index 00000000..ddb8d44a --- /dev/null +++ b/contrib/nslint-2.1a3/FILES @@ -0,0 +1,24 @@ +CHANGES +FILES +INSTALL +Makefile.in +README +VERSION +aclocal.m4 +config.guess +config.sub +configure +configure.in +install-sh +lbl/gnuc.h +lbl/os-irix5.h +lbl/os-osf3.h +lbl/os-solaris2.h +lbl/os-sunos4.h +lbl/os-ultrix4.h +mkdep +nslint.8 +nslint.c +savestr.c +savestr.h +strerror.c diff --git a/contrib/nslint-2.1a3/INSTALL b/contrib/nslint-2.1a3/INSTALL new file mode 100644 index 00000000..f8fed01e --- /dev/null +++ b/contrib/nslint-2.1a3/INSTALL @@ -0,0 +1,42 @@ +@(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/INSTALL,v 1.1 2001/12/21 04:12:02 marka Exp $ (LBL) + +You will need an ANSI C compiler to build nslint. The configure +script will abort if your compiler is not ANSI compliant. If this +happens, use the GNU C compiler, available via anonymous ftp: + + ftp://prep.ai.mit.edu/pub/gnu/gcc.tar.gz + +If necessary, edit the BINDEST and MANDEST paths in Makefile.in +and run ./configure (a shell script). "configure" will determine +your system attributes and generate an appropriate Makefile from +Makefile.in. Now build nslint by running "make". + +If everything builds ok, su and type "make install" (and optionally +"make install-man). This will install nslint and its manual entry. + +If your system is not one which we have tested nslint on, you may +have to modify the configure script and Makefile.in. Please send +us patches for any modifications you need to make. + +FILES +----- +CHANGES - description of differences between releases +FILES - list of files exported as part of the distribution +INSTALL - this file +Makefile.in - compilation rules (input to the configure script) +README - description of distribution +VERSION - version of this release +aclocal.m4 - autoconf macros +config.guess - autoconf support +config.sub - autoconf support +configure - configure script (run this first) +configure.in - configure script source +install-sh - BSD style install script +lbl/gnuc.h - gcc macros and defines +lbl/os-*.h - os dependent defines and prototypes +mkdep - construct Makefile dependency list +nslint.8 - manual entry +nslint.c - main program +savestr.c - strdup() replacement +savestr.h - savestr prototypes +strerror.c - missing routine diff --git a/contrib/nslint-2.1a3/Makefile.in b/contrib/nslint-2.1a3/Makefile.in new file mode 100644 index 00000000..5f21cc4f --- /dev/null +++ b/contrib/nslint-2.1a3/Makefile.in @@ -0,0 +1,122 @@ +# Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 2000 +# The Regents of the University of California. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that: (1) source code distributions +# retain the above copyright notice and this paragraph in its entirety, (2) +# distributions including binary code include the above copyright notice and +# this paragraph in its entirety in the documentation or other materials +# provided with the distribution, and (3) all advertising materials mentioning +# features or use of this software display the following acknowledgement: +# ``This product includes software developed by the University of California, +# Lawrence Berkeley Laboratory and its contributors.'' Neither the name of +# the University nor the names of its contributors may be used to endorse +# or promote products derived from this software without specific prior +# written permission. +# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +# +# @(#) $Id: Makefile.in,v 1.1 2001/12/21 04:12:02 marka Exp $ (LBL) + +# +# Various configurable paths (remember to edit Makefile.in, not Makefile) +# + +# Top level hierarchy +prefix = @prefix@ +exec_prefix = @exec_prefix@ +# Pathname of directory to install the binary +BINDEST = @bindir@ +# Pathname of directory to install the man page +MANDEST = @mandir@ + +# VPATH +srcdir = @srcdir@ +VPATH = @srcdir@ + +# +# You shouldn't need to edit anything below here. +# + +PROG = nslint +CC = @CC@ +CCOPT = @V_CCOPT@ +INCLS = @V_INCLS@ +DEFS = @DEFS@ + +# Standard CFLAGS +CFLAGS = $(CCOPT) $(DEFS) $(INCLS) + +# Standard LIBS +LIBS = @LIBS@ + +INSTALL = @INSTALL@ + +# Explicitly define compilation rule since SunOS 4's make doesn't like gcc. +# Also, gcc does not remove the .o before forking 'as', which can be a +# problem if you don't own the file but can write to the directory. +.c.o: + @rm -f $@ + $(CC) $(CFLAGS) -c $(srcdir)/$*.c + +CSRC = nslint.c savestr.c +GENSRC = version.c + +SRC = $(CSRC) $(GENSRC) + +# We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot +# hack the extra indirection +OBJ = $(CSRC:.c=.o) $(GENSRC:.c=.o) @LIBOBJS@ + +TAGHDR = \ + /usr/include/sys/types.h \ + /usr/include/netinet/in.h + +TAGFILES = $(SRC) $(TAGHDR) + +CLEANFILES = $(PROG) $(OBJ) $(GENSRC) + +$(PROG): $(OBJ) + @rm -f $@ + $(CC) $(CFLAGS) -o $@ $(OBJ) $(LIBS) + +version.o: version.c +version.c: $(srcdir)/VERSION + @rm -f $@ + sed -e 's/.*/char version[] = "&";/' $(srcdir)/VERSION > $@ + +install: force + $(INSTALL) -m 555 -o bin -g bin $(PROG) $(DESTDIR)$(BINDEST)/$(PROG) + +install-man: force + $(INSTALL) -m 444 -o bin -g bin $(srcdir)/$(PROG).8 \ + $(DESTDIR)$(MANDEST)/man8/$(PROG).8 + +clean: force + rm -f $(CLEANFILES) + +distclean: force + rm -f $(CLEANFILES) Makefile config.cache config.log config.status \ + gnuc.h os-proto.h + +tags: $(TAGFILES) + ctags -wtd $(TAGFILES) + +tar: force + @cwd=`pwd` ; name=$(PROG)-`cat VERSION` ; \ + list="" ; tar="tar chf" ; temp="$$name.tar.gz" ; \ + for i in `cat FILES` ; do list="$$list $$name/$$i" ; done; \ + echo \ + "rm -f $$name; ln -s . $$name" ; \ + rm -f $$name; ln -s . $$name ; \ + echo \ + "$$tar - [lots of files] | gzip > $$temp" ; \ + $$tar - $$list | gzip > $$temp ; \ + echo \ + "rm -f $$name" ; \ + rm -f $$name + +force: /tmp +depend: $(GENSRC) force + ./mkdep -c $(CC) $(DEFS) $(INCLS) $(SRC) diff --git a/contrib/nslint-2.1a3/README b/contrib/nslint-2.1a3/README new file mode 100644 index 00000000..39f0202a --- /dev/null +++ b/contrib/nslint-2.1a3/README @@ -0,0 +1,14 @@ +@(#) $Id: README,v 1.1 2001/12/21 04:12:02 marka Exp $ (LBL) + +NSLINT 2.0 +Lawrence Berkeley National Laboratory +Network Research Group +nslint@ee.lbl.gov +ftp://ftp.ee.lbl.gov/nslint.tar.gz + +This directory contains source code for nslint, a lint program for dns +files. + +Please send bugs and comments to nslint@ee.lbl.gov. + + - Craig Leres diff --git a/contrib/nslint-2.1a3/VERSION b/contrib/nslint-2.1a3/VERSION new file mode 100644 index 00000000..375279c6 --- /dev/null +++ b/contrib/nslint-2.1a3/VERSION @@ -0,0 +1 @@ +2.1a3 diff --git a/contrib/nslint-2.1a3/aclocal.m4 b/contrib/nslint-2.1a3/aclocal.m4 new file mode 100644 index 00000000..44ab733d --- /dev/null +++ b/contrib/nslint-2.1a3/aclocal.m4 @@ -0,0 +1,765 @@ +dnl @(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/aclocal.m4,v 1.1 2001/12/21 04:12:03 marka Exp $ (LBL) +dnl +dnl Copyright (c) 1995, 1996, 1997, 1998, 1999 +dnl The Regents of the University of California. All rights reserved. +dnl +dnl Redistribution and use in source and binary forms, with or without +dnl modification, are permitted provided that: (1) source code distributions +dnl retain the above copyright notice and this paragraph in its entirety, (2) +dnl distributions including binary code include the above copyright notice and +dnl this paragraph in its entirety in the documentation or other materials +dnl provided with the distribution, and (3) all advertising materials mentioning +dnl features or use of this software display the following acknowledgement: +dnl ``This product includes software developed by the University of California, +dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of +dnl the University nor the names of its contributors may be used to endorse +dnl or promote products derived from this software without specific prior +dnl written permission. +dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +dnl +dnl LBL autoconf macros +dnl + +dnl +dnl Determine which compiler we're using (cc or gcc) +dnl If using gcc, determine the version number +dnl If using cc, require that it support ansi prototypes +dnl If using gcc, use -O2 (otherwise use -O) +dnl If using cc, explicitly specify /usr/local/include +dnl +dnl usage: +dnl +dnl AC_LBL_C_INIT(copt, incls) +dnl +dnl results: +dnl +dnl $1 (copt set) +dnl $2 (incls set) +dnl CC +dnl LDFLAGS +dnl LBL_CFLAGS +dnl +AC_DEFUN(AC_LBL_C_INIT, + [AC_PREREQ(2.12) + AC_BEFORE([$0], [AC_PROG_CC]) + AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) + AC_BEFORE([$0], [AC_LBL_DEVEL]) + AC_ARG_WITH(gcc, [ --without-gcc don't use gcc]) + $1="-O" + $2="" + if test "${srcdir}" != "." ; then + $2="-I\$\(srcdir\)" + fi + if test "${CFLAGS+set}" = set; then + LBL_CFLAGS="$CFLAGS" + fi + if test -z "$CC" ; then + case "$target_os" in + + bsdi*) + AC_CHECK_PROG(SHLICC2, shlicc2, yes, no) + if test $SHLICC2 = yes ; then + CC=shlicc2 + export CC + fi + ;; + esac + fi + if test -z "$CC" -a "$with_gcc" = no ; then + CC=cc + export CC + fi + AC_PROG_CC + if test "$GCC" != yes ; then + AC_MSG_CHECKING(that $CC handles ansi prototypes) + AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes, + AC_TRY_COMPILE( + [#include <sys/types.h>], + [int frob(int, char *)], + ac_cv_lbl_cc_ansi_prototypes=yes, + ac_cv_lbl_cc_ansi_prototypes=no)) + AC_MSG_RESULT($ac_cv_lbl_cc_ansi_prototypes) + if test $ac_cv_lbl_cc_ansi_prototypes = no ; then + case "$target_os" in + + hpux*) + AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)) + savedcflags="$CFLAGS" + CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" + AC_CACHE_VAL(ac_cv_lbl_cc_hpux_cc_aa, + AC_TRY_COMPILE( + [#include <sys/types.h>], + [int frob(int, char *)], + ac_cv_lbl_cc_hpux_cc_aa=yes, + ac_cv_lbl_cc_hpux_cc_aa=no)) + AC_MSG_RESULT($ac_cv_lbl_cc_hpux_cc_aa) + if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then + AC_MSG_ERROR(see the INSTALL doc for more info) + fi + CFLAGS="$savedcflags" + $1="-Aa $$1" + AC_DEFINE(_HPUX_SOURCE) + ;; + + *) + AC_MSG_ERROR(see the INSTALL doc for more info) + ;; + esac + fi + $2="$$2 -I/usr/local/include" + LDFLAGS="$LDFLAGS -L/usr/local/lib" + + case "$target_os" in + + irix*) + $1="$$1 -xansi -signed -g3" + ;; + + osf*) + $1="$$1 -std1 -g3" + ;; + + ultrix*) + AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes) + AC_CACHE_VAL(ac_cv_lbl_cc_const_proto, + AC_TRY_COMPILE( + [#include <sys/types.h>], + [struct a { int b; }; + void c(const struct a *)], + ac_cv_lbl_cc_const_proto=yes, + ac_cv_lbl_cc_const_proto=no)) + AC_MSG_RESULT($ac_cv_lbl_cc_const_proto) + if test $ac_cv_lbl_cc_const_proto = no ; then + AC_DEFINE(const,) + fi + ;; + esac + fi +]) + +dnl +dnl Use pfopen.c if available and pfopen() not in standard libraries +dnl Require libpcap +dnl Look for libpcap in .. +dnl Use the installed libpcap if there is no local version +dnl +dnl usage: +dnl +dnl AC_LBL_LIBPCAP(pcapdep, incls) +dnl +dnl results: +dnl +dnl $1 (pcapdep set) +dnl $2 (incls appended) +dnl LIBS +dnl LDFLAGS +dnl LBL_LIBS +dnl +AC_DEFUN(AC_LBL_LIBPCAP, + [AC_REQUIRE([AC_LBL_LIBRARY_NET]) + dnl + dnl save a copy before locating libpcap.a + dnl + LBL_LIBS="$LIBS" + pfopen=/usr/examples/packetfilter/pfopen.c + if test -f $pfopen ; then + AC_CHECK_FUNCS(pfopen) + if test $ac_cv_func_pfopen = "no" ; then + AC_MSG_RESULT(Using $pfopen) + LIBS="$LIBS $pfopen" + fi + fi + AC_MSG_CHECKING(for local pcap library) + libpcap=FAIL + lastdir=FAIL + places=`ls .. | sed -e 's,/$,,' -e 's,^,../,' | \ + egrep '/libpcap-[[0-9]]*\.[[0-9]]*(\.[[0-9]]*)?([[ab]][[0-9]]*)?$'` + for dir in $places ../libpcap libpcap ; do + basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'` + if test $lastdir = $basedir ; then + dnl skip alphas when an actual release is present + continue; + fi + lastdir=$dir + if test -r $dir/pcap.c ; then + libpcap=$dir/libpcap.a + d=$dir + dnl continue and select the last one that exists + fi + done + if test "x$libpcap" = xFAIL ; then + AC_MSG_RESULT(not found) + unset ac_cv_lbl_lib_pcap_pcap_open_live_ + AC_LBL_CHECK_LIB(pcap, pcap_open_live, libpcap="-lpcap") + if test "x$libpcap" = xFAIL ; then + unset ac_cv_lbl_lib_pcap_pcap_open_live_ + CFLAGS="$CFLAGS -I/usr/local/include" + LIBS="$LIBS -L/usr/local/lib" + AC_LBL_CHECK_LIB(pcap, pcap_open_live, libpcap="-lpcap") + if test "x$libpcap" = xFAIL ; then + AC_MSG_ERROR(see the INSTALL doc for more info) + fi + $2="$$2 -I/usr/local/include" + fi + LIBS="$LIBS -lpcap" + else + $1=$libpcap + $2="-I$d $$2" + AC_MSG_RESULT($libpcap) + fi + if test "x$libpcap" != "x-lpcap" ; then + LIBS="$libpcap $LIBS" + fi + case "$target_os" in + + aix*) + pseexe="/lib/pse.exp" + AC_MSG_CHECKING(for $pseexe) + if test -f $pseexe ; then + AC_MSG_RESULT(yes) + LIBS="$LIBS -I:$pseexe" + fi + ;; + esac]) + +dnl +dnl Define RETSIGTYPE and RETSIGVAL +dnl +dnl usage: +dnl +dnl AC_LBL_TYPE_SIGNAL +dnl +dnl results: +dnl +dnl RETSIGTYPE (defined) +dnl RETSIGVAL (defined) +dnl +AC_DEFUN(AC_LBL_TYPE_SIGNAL, + [AC_BEFORE([$0], [AC_LBL_LIBPCAP]) + AC_TYPE_SIGNAL + if test "$ac_cv_type_signal" = void ; then + AC_DEFINE(RETSIGVAL,) + else + AC_DEFINE(RETSIGVAL,(0)) + fi + case "$target_os" in + + irix*) + AC_DEFINE(_BSD_SIGNALS) + ;; + + *) + dnl prefer sigset() to sigaction() + AC_CHECK_FUNCS(sigset) + if test $ac_cv_func_sigset = yes ; then + AC_DEFINE(signal,sigset) + else + AC_CHECK_FUNCS(sigaction) + fi + ;; + esac]) + +dnl +dnl If using gcc, make sure we have ANSI ioctl definitions +dnl +dnl usage: +dnl +dnl AC_LBL_FIXINCLUDES +dnl +AC_DEFUN(AC_LBL_FIXINCLUDES, + [if test "$GCC" = yes ; then + AC_MSG_CHECKING(for ANSI ioctl definitions) + AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes, + AC_TRY_COMPILE( + [/* + * This generates a "duplicate case value" when fixincludes + * has not be run. + */ +# include <sys/types.h> +# include <sys/time.h> +# include <sys/ioctl.h> +# ifdef HAVE_SYS_IOCCOM_H +# include <sys/ioccom.h> +# endif], + [switch (0) { + case _IO('A', 1):; + case _IO('B', 1):; + }], + ac_cv_lbl_gcc_fixincludes=yes, + ac_cv_lbl_gcc_fixincludes=no)) + AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes) + if test $ac_cv_lbl_gcc_fixincludes = no ; then + # Don't cache failure + unset ac_cv_lbl_gcc_fixincludes + AC_MSG_ERROR(see the INSTALL for more info) + fi + fi]) + +dnl +dnl Check for flex, default to lex +dnl Require flex 2.4 or higher +dnl Check for bison, default to yacc +dnl Default to lex/yacc if both flex and bison are not available +dnl Define the yy prefix string if using flex and bison +dnl +dnl usage: +dnl +dnl AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix) +dnl +dnl results: +dnl +dnl $1 (lex set) +dnl $2 (yacc appended) +dnl $3 (optional flex and bison -P prefix) +dnl +AC_DEFUN(AC_LBL_LEX_AND_YACC, + [AC_ARG_WITH(flex, [ --without-flex don't use flex]) + AC_ARG_WITH(bison, [ --without-bison don't use bison]) + if test "$with_flex" = no ; then + $1=lex + else + AC_CHECK_PROGS($1, flex, lex) + fi + if test "$$1" = flex ; then + # The -V flag was added in 2.4 + AC_MSG_CHECKING(for flex 2.4 or higher) + AC_CACHE_VAL(ac_cv_lbl_flex_v24, + if flex -V >/dev/null 2>&1; then + ac_cv_lbl_flex_v24=yes + else + ac_cv_lbl_flex_v24=no + fi) + AC_MSG_RESULT($ac_cv_lbl_flex_v24) + if test $ac_cv_lbl_flex_v24 = no ; then + s="2.4 or higher required" + AC_MSG_WARN(ignoring obsolete flex executable ($s)) + $1=lex + fi + fi + if test "$with_bison" = no ; then + $2=yacc + else + AC_CHECK_PROGS($2, bison, yacc) + fi + if test "$$2" = bison ; then + $2="$$2 -y" + fi + if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then + AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc) + $1=lex + $2=yacc + fi + if test "$$1" = flex -a -n "$3" ; then + $1="$$1 -P$3" + $2="$$2 -p $3" + fi]) + +dnl +dnl Checks to see if union wait is used with WEXITSTATUS() +dnl +dnl usage: +dnl +dnl AC_LBL_UNION_WAIT +dnl +dnl results: +dnl +dnl DECLWAITSTATUS (defined) +dnl +AC_DEFUN(AC_LBL_UNION_WAIT, + [AC_MSG_CHECKING(if union wait is used) + AC_CACHE_VAL(ac_cv_lbl_union_wait, + AC_TRY_COMPILE([ +# include <sys/types.h> +# include <sys/wait.h>], + [int status; + u_int i = WEXITSTATUS(status); + u_int j = waitpid(0, &status, 0);], + ac_cv_lbl_union_wait=no, + ac_cv_lbl_union_wait=yes)) + AC_MSG_RESULT($ac_cv_lbl_union_wait) + if test $ac_cv_lbl_union_wait = yes ; then + AC_DEFINE(DECLWAITSTATUS,union wait) + else + AC_DEFINE(DECLWAITSTATUS,int) + fi]) + +dnl +dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member +dnl +dnl usage: +dnl +dnl AC_LBL_SOCKADDR_SA_LEN +dnl +dnl results: +dnl +dnl HAVE_SOCKADDR_SA_LEN (defined) +dnl +AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN, + [AC_MSG_CHECKING(if sockaddr struct has sa_len member) + AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len, + AC_TRY_COMPILE([ +# include <sys/types.h> +# include <sys/socket.h>], + [u_int i = sizeof(((struct sockaddr *)0)->sa_len)], + ac_cv_lbl_sockaddr_has_sa_len=yes, + ac_cv_lbl_sockaddr_has_sa_len=no)) + AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len) + if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then + AC_DEFINE(HAVE_SOCKADDR_SA_LEN) + fi]) + +dnl +dnl Checks to see if the IFF_LOOPBACK exists as a define or enum +dnl +dnl (stupidly some versions of linux use an enum...) +dnl +dnl usage: +dnl +dnl AC_LBL_IFF_LOOPBACK +dnl +dnl results: +dnl +dnl HAVE_IFF_LOOPBACK (defined) +dnl +AC_DEFUN(AC_LBL_IFF_LOOPBACK, + [AC_MSG_CHECKING(for IFF_LOOPBACK define/enum) + AC_CACHE_VAL(ac_cv_lbl_have_iff_loopback, + AC_TRY_COMPILE([ +# include <sys/param.h> +# include <sys/file.h> +# include <sys/ioctl.h> +# include <sys/socket.h> +# ifdef HAVE_SYS_SOCKIO_H +# include <sys/sockio.h> +# endif +# include <sys/time.h> +# include <net/if.h> +# include <netinet/in.h>], + [int i = IFF_LOOPBACK], + ac_cv_lbl_have_iff_loopback=yes, + ac_cv_lbl_have_iff_loopback=no)) + AC_MSG_RESULT($ac_cv_lbl_have_iff_loopback) + if test $ac_cv_lbl_have_iff_loopback = yes ; then + AC_DEFINE(HAVE_IFF_LOOPBACK) + fi]) + +dnl +dnl Checks to see if -R is used +dnl +dnl usage: +dnl +dnl AC_LBL_HAVE_RUN_PATH +dnl +dnl results: +dnl +dnl ac_cv_lbl_have_run_path (yes or no) +dnl +AC_DEFUN(AC_LBL_HAVE_RUN_PATH, + [AC_MSG_CHECKING(for ${CC-cc} -R) + AC_CACHE_VAL(ac_cv_lbl_have_run_path, + [echo 'main(){}' > conftest.c + ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1 + if test ! -s conftest.out ; then + ac_cv_lbl_have_run_path=yes + else + ac_cv_lbl_have_run_path=no + fi + rm -f conftest*]) + AC_MSG_RESULT($ac_cv_lbl_have_run_path) + ]) + +dnl +dnl Due to the stupid way it's implemented, AC_CHECK_TYPE is nearly useless. +dnl +dnl usage: +dnl +dnl AC_LBL_CHECK_TYPE +dnl +dnl results: +dnl +dnl int32_t (defined) +dnl u_int32_t (defined) +dnl +AC_DEFUN(AC_LBL_CHECK_TYPE, + [AC_MSG_CHECKING(for $1 using $CC) + AC_CACHE_VAL(ac_cv_lbl_have_$1, + AC_TRY_COMPILE([ +# include "confdefs.h" +# include <sys/types.h> +# if STDC_HEADERS +# include <stdlib.h> +# include <stddef.h> +# endif], + [$1 i], + ac_cv_lbl_have_$1=yes, + ac_cv_lbl_have_$1=no)) + AC_MSG_RESULT($ac_cv_lbl_have_$1) + if test $ac_cv_lbl_have_$1 = no ; then + AC_DEFINE($1, $2) + fi]) + +dnl +dnl Checks to see if unaligned memory accesses fail +dnl +dnl usage: +dnl +dnl AC_LBL_UNALIGNED_ACCESS +dnl +dnl results: +dnl +dnl LBL_ALIGN (DEFINED) +dnl +AC_DEFUN(AC_LBL_UNALIGNED_ACCESS, + [AC_MSG_CHECKING(if unaligned accesses fail) + AC_CACHE_VAL(ac_cv_lbl_unaligned_fail, + [case "$target_cpu" in + + alpha|hp*|mips|sparc) + ac_cv_lbl_unaligned_fail=yes + ;; + + *) + cat >conftest.c <<EOF +# include <sys/types.h> +# include <sys/wait.h> +# include <stdio.h> + unsigned char a[[5]] = { 1, 2, 3, 4, 5 }; + main() { + unsigned int i; + pid_t pid; + int status; + /* avoid "core dumped" message */ + pid = fork(); + if (pid < 0) + exit(2); + if (pid > 0) { + /* parent */ + pid = waitpid(pid, &status, 0); + if (pid < 0) + exit(3); + exit(!WIFEXITED(status)); + } + /* child */ + i = *(unsigned int *)&a[[1]]; + printf("%d\n", i); + exit(0); + } +EOF + ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \ + conftest.c $LIBS >/dev/null 2>&1 + if test ! -x conftest ; then + dnl failed to compile for some reason + ac_cv_lbl_unaligned_fail=yes + else + ./conftest >conftest.out + if test ! -s conftest.out ; then + ac_cv_lbl_unaligned_fail=yes + else + ac_cv_lbl_unaligned_fail=no + fi + fi + rm -f conftest* core core.conftest + ;; + esac]) + AC_MSG_RESULT($ac_cv_lbl_unaligned_fail) + if test $ac_cv_lbl_unaligned_fail = yes ; then + AC_DEFINE(LBL_ALIGN) + fi]) + +dnl +dnl add all warning option to CFLAGS +dnl +dnl usage: +dnl +dnl AC_LBL_CHECK_WALL(copt) +dnl +dnl results: +dnl +dnl $1 (copt appended) +dnl ac_cv_lbl_gcc_vers +dnl +AC_DEFUN(AC_LBL_CHECK_WALL, + [ if test "$GCC" = yes ; then + if test "$SHLICC2" = yes ; then + ac_cv_lbl_gcc_vers=2 + $1="`echo $$1 | sed -e 's/-O/-O2/'`" + else + AC_MSG_CHECKING(gcc version) + AC_CACHE_VAL(ac_cv_lbl_gcc_vers, + ac_cv_lbl_gcc_vers=`$CC --version 2>&1 | \ + sed -e 's/\..*//'`) + AC_MSG_RESULT($ac_cv_lbl_gcc_vers) + if test $ac_cv_lbl_gcc_vers -gt 1 ; then + $1="`echo $$1 | sed -e 's/-O/-O2/'`" + fi + fi + if test "${LBL_CFLAGS+set}" != set; then + if test "$ac_cv_prog_cc_g" = yes ; then + $1="-g $$1" + fi + $1="$$1 -Wall" + if test $ac_cv_lbl_gcc_vers -gt 1 ; then + $1="$$1 -Wmissing-prototypes -Wstrict-prototypes" + fi + fi + else + case "$target_os" in + + irix6*) + $1="$$1 -fullwarn -n32" + ;; + + *) + ;; + esac + fi]) + +dnl +dnl If using gcc and the file .devel exists: +dnl Compile with -g (if supported) and -Wall +dnl If using gcc 2, do extra prototype checking +dnl If an os prototype include exists, symlink os-proto.h to it +dnl +dnl usage: +dnl +dnl AC_LBL_DEVEL(copt) +dnl +dnl results: +dnl +dnl $1 (copt appended) +dnl HAVE_OS_PROTO_H (defined) +dnl os-proto.h (symlinked) +dnl +AC_DEFUN(AC_LBL_DEVEL, + [rm -f os-proto.h + if test "${LBL_CFLAGS+set}" = set; then + $1="$$1 ${LBL_CFLAGS}" + fi + if test -f .devel ; then + AC_LBL_CHECK_WALL($1) + os=`echo $target_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'` + name="lbl/os-$os.h" + if test -f $name ; then + ln -s $name os-proto.h + AC_DEFINE(HAVE_OS_PROTO_H) + else + AC_MSG_WARN(can't find $name) + fi + fi]) + +dnl +dnl Improved version of AC_CHECK_LIB +dnl +dnl Thanks to John Hawkinson (jhawk@mit.edu) +dnl +dnl usage: +dnl +dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, +dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]]) +dnl +dnl results: +dnl +dnl LIBS +dnl + +define(AC_LBL_CHECK_LIB, +[AC_MSG_CHECKING([for $2 in -l$1]) +dnl Use a cache variable name containing both the library and function name, +dnl because the test really is for library $1 defining function $2, not +dnl just for library $1. Separate tests with the same $1 and different $2's +dnl may have different results. +ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'` +AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var, +[ac_save_LIBS="$LIBS" +LIBS="-l$1 $5 $LIBS" +AC_TRY_LINK(dnl +ifelse([$2], [main], , dnl Avoid conflicting decl of main. +[/* Override any gcc2 internal prototype to avoid an error. */ +]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus +extern "C" +#endif +])dnl +[/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $2(); +]), + [$2()], + eval "ac_cv_lbl_lib_$ac_lib_var=yes", + eval "ac_cv_lbl_lib_$ac_lib_var=no") +LIBS="$ac_save_LIBS" +])dnl +if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then + AC_MSG_RESULT(yes) + ifelse([$3], , +[changequote(, )dnl + ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` +changequote([, ])dnl + AC_DEFINE_UNQUOTED($ac_tr_lib) + LIBS="-l$1 $LIBS" +], [$3]) +else + AC_MSG_RESULT(no) +ifelse([$4], , , [$4 +])dnl +fi +]) + +dnl +dnl AC_LBL_LIBRARY_NET +dnl +dnl This test is for network applications that need socket() and +dnl gethostbyname() -ish functions. Under Solaris, those applications +dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link +dnl with "-lnsl" but should *not* link with "-lsocket" because +dnl libsocket.a breaks a number of things (for instance: +dnl gethostbyname() under IRIX 5.2, and snoop sockets under most +dnl versions of IRIX). +dnl +dnl Unfortunately, many application developers are not aware of this, +dnl and mistakenly write tests that cause -lsocket to be used under +dnl IRIX. It is also easy to write tests that cause -lnsl to be used +dnl under operating systems where neither are necessary (or useful), +dnl such as SunOS 4.1.4, which uses -lnsl for TLI. +dnl +dnl This test exists so that every application developer does not test +dnl this in a different, and subtly broken fashion. + +dnl It has been argued that this test should be broken up into two +dnl seperate tests, one for the resolver libraries, and one for the +dnl libraries necessary for using Sockets API. Unfortunately, the two +dnl are carefully intertwined and allowing the autoconf user to use +dnl them independantly potentially results in unfortunate ordering +dnl dependancies -- as such, such component macros would have to +dnl carefully use indirection and be aware if the other components were +dnl executed. Since other autoconf macros do not go to this trouble, +dnl and almost no applications use sockets without the resolver, this +dnl complexity has not been implemented. +dnl +dnl The check for libresolv is in case you are attempting to link +dnl statically and happen to have a libresolv.a lying around (and no +dnl libnsl.a). +dnl +AC_DEFUN(AC_LBL_LIBRARY_NET, [ + # Most operating systems have gethostbyname() in the default searched + # libraries (i.e. libc): + AC_CHECK_FUNC(gethostbyname, , + # Some OSes (eg. Solaris) place it in libnsl: + AC_LBL_CHECK_LIB(nsl, gethostbyname, , + # Some strange OSes (SINIX) have it in libsocket: + AC_LBL_CHECK_LIB(socket, gethostbyname, , + # Unfortunately libsocket sometimes depends on libnsl. + # AC_CHECK_LIB's API is essentially broken so the + # following ugliness is necessary: + AC_LBL_CHECK_LIB(socket, gethostbyname, + LIBS="-lsocket -lnsl $LIBS", + AC_CHECK_LIB(resolv, gethostbyname), + -lnsl)))) + AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, , + AC_LBL_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , + -lnsl))) + # DLPI needs putmsg under HPUX so test for -lstr while we're at it + AC_CHECK_LIB(str, putmsg) + ]) diff --git a/contrib/nslint-2.1a3/config.guess b/contrib/nslint-2.1a3/config.guess new file mode 100755 index 00000000..e9e44559 --- /dev/null +++ b/contrib/nslint-2.1a3/config.guess @@ -0,0 +1,693 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc. +# +# 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>. +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# +# 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 system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +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 + +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + # 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. + echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'` + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-cbm-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + Pyramid*:OSx*:*:*|MIS*: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 ;; + 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 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-atari-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-sun-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-apple-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 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >dummy.c + int main (argc, argv) int argc; char **argv; { + #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-cc} dummy.c -o dummy \ + && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo mips-mips-riscos${UNAME_RELEASE} + 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 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${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 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + 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-cc} dummy.c -o dummy && ./dummy && rm 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:*:4) + if /usr/sbin/lsattr -EHl proc0 | 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=4.${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 NetBSD 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/[3478]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;; + 9000/8?? ) HP_ARCH=hppa1.0 ;; + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + 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-cc} dummy.c -o dummy && ./dummy && rm 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 ;; + 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 ;; + 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} + 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/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp3[0-9][05]:OpenBSD:*:*) + echo m68k-hp-openbsd${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`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 i386-pc-cygwin32 + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin32 + 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 ;; + *:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. + ld_help_string=`ld --help 2>&1` + if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then + echo "${UNAME_MACHINE}-pc-linux-gnu" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then + echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then + echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then + echo "${UNAME_MACHINE}-unknown-linux-gnu" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then + echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 + elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then + echo "powerpc-unknown-linux-gnu" ; exit 0 + elif test "${UNAME_MACHINE}" = "alpha" ; then + echo alpha-unknown-linux-gnu ; exit 0 + elif test "${UNAME_MACHINE}" = "sparc" ; then + echo sparc-unknown-linux-gnu ; exit 0 + else + # Either a pre-BFD a.out linker (linux-gnuoldld) or one that does not give us + # useful --help. Gcc wants to distinguish between linux-gnuoldld and linux-gnuaout. + test ! -d /usr/lib/ldscripts/. \ + && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + # Determine whether the default compiler is a.out or elf + cat >dummy.c <<EOF +main(argc, argv) +int argc; +char *argv[]; +{ +#ifdef __ELF__ + printf ("%s-pc-linux-gnu\n", argv[1]); +#else + printf ("%s-pc-linux-gnuaout\n", argv[1]); +#endif + return 0; +} +EOF + ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + 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 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + 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]??,*:*: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.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + 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 ;; + *: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 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says <Richard.M.Bartel@ccMail.Census.GOV> + echo i586-unisys-sysv4 + 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 + +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`; + printf ("%s-next-nextstep%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) + printf ("vax-dec-bsd\n"); exit (0); +#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-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm 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 + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/contrib/nslint-2.1a3/config.sub b/contrib/nslint-2.1a3/config.sub new file mode 100755 index 00000000..04325249 --- /dev/null +++ b/contrib/nslint-2.1a3/config.sub @@ -0,0 +1,927 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc. +# 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. + +# 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. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +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 + linux-gnu*) + 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) + os= + 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/'` + ;; + -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 + ;; +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. + tahoe | i860 | m68k | m68000 | m88k | ns32k | arm \ + | arme[lb] | pyramid \ + | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ + | alpha | we32k | ns16k | clipper | i370 | sh \ + | powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \ + | pdp11 | mips64el | mips64orion | mips64orionel \ + | sparc | sparclet | sparclite | sparc64) + basic_machine=$basic_machine-unknown + ;; + # 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[3456]86) + 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. + vax-* | tahoe-* | i[3456]86-* | i860-* | m68k-* | m68000-* | m88k-* \ + | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \ + | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \ + | hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \ + | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \ + | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* | f301-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + 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-cbm + ;; + amigados) + basic_machine=m68k-cbm + os=-amigados + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + 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 + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + 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 + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-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 + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[3456]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[3456]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[3456]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[3456]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + 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 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + 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 + ;; + 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 + ;; + np1) + basic_machine=np1-gould + ;; + 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) + basic_machine=i586-intel + ;; + pentiumpro | p6) + basic_machine=i686-intel + ;; + pentium-* | p5-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + k5) + # We don't have specific support for AMD's K5 yet, so just call it a Pentium + basic_machine=i586-amd + ;; + nexen) + # We don't have specific support for Nexgen yet, so just call it a Pentium + basic_machine=i586-nexgen + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-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/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + 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 + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + 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 + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + 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. + mips) + basic_machine=mips-mips + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + 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 + ;; + -unixware* | svr4*) + os=-sysv4 + ;; + -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* \ + | -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* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -linux-gnu* | -uxpv*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -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|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # 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*) + ;; + -xenix) + os=-xenix + ;; + -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*-semi) + os=-aout + ;; + 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 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigados + ;; + *-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 + ;; + f301-fujitsu) + os=-uxpv + ;; + *) + 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 + ;; + -hpux*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/contrib/nslint-2.1a3/configure b/contrib/nslint-2.1a3/configure new file mode 100755 index 00000000..db5c53e8 --- /dev/null +++ b/contrib/nslint-2.1a3/configure @@ -0,0 +1,1905 @@ +#! /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 + --without-gcc don't use gcc" + +# 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=nslint.c + +# 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. + + +# Do some error checking and defaulting for the host and target type. +# The inputs are: +# configure --host=HOST --target=TARGET --build=BUILD NONOPT +# +# The rules are: +# 1. You are not allowed to specify --host, --target, and nonopt at the +# same time. +# 2. Host defaults to nonopt. +# 3. If nonopt is not specified, then host defaults to the current host, +# as determined by config.guess. +# 4. Target and build default to nonopt. +# 5. If nonopt is not specified, then target and build default to host. + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +case $host---$target---$nonopt in +NONE---*---* | *---NONE---* | *---*---NONE) ;; +*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;; +esac + + +# 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:575: 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 + +echo $ac_n "checking target system type""... $ac_c" 1>&6 +echo "configure:596: checking target system type" >&5 + +target_alias=$target +case "$target_alias" in +NONE) + case $nonopt in + NONE) target_alias=$host_alias ;; + *) target_alias=$nonopt ;; + esac ;; +esac + +target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias` +target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$target" 1>&6 + +echo $ac_n "checking build system type""... $ac_c" 1>&6 +echo "configure:614: 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 + +test "$host_alias" != "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + + +umask 002 + +if test -z "$PWD" ; then + PWD=`pwd` +fi + + + + + + # Check whether --with-gcc or --without-gcc was given. +if test "${with_gcc+set}" = set; then + withval="$with_gcc" + : +fi + + V_CCOPT="-O" + V_INCLS="" + if test "${srcdir}" != "." ; then + V_INCLS="-I\$\(srcdir\)" + fi + if test "${CFLAGS+set}" = set; then + LBL_CFLAGS="$CFLAGS" + fi + if test -z "$CC" ; then + case "$target_os" in + + bsdi*) + # Extract the first word of "shlicc2", so it can be a program name with args. +set dummy shlicc2; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:668: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_SHLICC2'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$SHLICC2"; then + ac_cv_prog_SHLICC2="$SHLICC2" # 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_SHLICC2="yes" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_SHLICC2" && ac_cv_prog_SHLICC2="no" +fi +fi +SHLICC2="$ac_cv_prog_SHLICC2" +if test -n "$SHLICC2"; then + echo "$ac_t""$SHLICC2" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test $SHLICC2 = yes ; then + CC=shlicc2 + export CC + fi + ;; + esac + fi + if test -z "$CC" -a "$with_gcc" = no ; then + CC=cc + export CC + fi + # 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:709: 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:739: 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:790: 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:822: 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 833 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:838: \"$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:864: 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:869: 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:878: \"$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:897: 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 + + if test "$GCC" != yes ; then + echo $ac_n "checking that $CC handles ansi prototypes""... $ac_c" 1>&6 +echo "configure:930: checking that $CC handles ansi prototypes" >&5 + if eval "test \"`echo '$''{'ac_cv_lbl_cc_ansi_prototypes'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 935 "configure" +#include "confdefs.h" +#include <sys/types.h> +int main() { +int frob(int, char *) +; return 0; } +EOF +if { (eval echo configure:942: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_lbl_cc_ansi_prototypes=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_lbl_cc_ansi_prototypes=no +fi +rm -f conftest* +fi + + echo "$ac_t""$ac_cv_lbl_cc_ansi_prototypes" 1>&6 + if test $ac_cv_lbl_cc_ansi_prototypes = no ; then + case "$target_os" in + + hpux*) + echo $ac_n "checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)""... $ac_c" 1>&6 +echo "configure:960: checking for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)" >&5 + savedcflags="$CFLAGS" + CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" + if eval "test \"`echo '$''{'ac_cv_lbl_cc_hpux_cc_aa'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 967 "configure" +#include "confdefs.h" +#include <sys/types.h> +int main() { +int frob(int, char *) +; return 0; } +EOF +if { (eval echo configure:974: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_lbl_cc_hpux_cc_aa=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_lbl_cc_hpux_cc_aa=no +fi +rm -f conftest* +fi + + echo "$ac_t""$ac_cv_lbl_cc_hpux_cc_aa" 1>&6 + if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then + { echo "configure: error: see the INSTALL doc for more info" 1>&2; exit 1; } + fi + CFLAGS="$savedcflags" + V_CCOPT="-Aa $V_CCOPT" + cat >> confdefs.h <<\EOF +#define _HPUX_SOURCE 1 +EOF + + ;; + + *) + { echo "configure: error: see the INSTALL doc for more info" 1>&2; exit 1; } + ;; + esac + fi + V_INCLS="$V_INCLS -I/usr/local/include" + LDFLAGS="$LDFLAGS -L/usr/local/lib" + + case "$target_os" in + + irix*) + V_CCOPT="$V_CCOPT -xansi -signed -g3" + ;; + + osf*) + V_CCOPT="$V_CCOPT -std1 -g3" + ;; + + ultrix*) + echo $ac_n "checking that Ultrix $CC hacks const in prototypes""... $ac_c" 1>&6 +echo "configure:1018: checking that Ultrix $CC hacks const in prototypes" >&5 + if eval "test \"`echo '$''{'ac_cv_lbl_cc_const_proto'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1023 "configure" +#include "confdefs.h" +#include <sys/types.h> +int main() { +struct a { int b; }; + void c(const struct a *) +; return 0; } +EOF +if { (eval echo configure:1031: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_lbl_cc_const_proto=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_lbl_cc_const_proto=no +fi +rm -f conftest* +fi + + echo "$ac_t""$ac_cv_lbl_cc_const_proto" 1>&6 + if test $ac_cv_lbl_cc_const_proto = no ; then + cat >> confdefs.h <<\EOF +#define const +EOF + + fi + ;; + esac + fi + + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:1056: 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 1071 "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:1077: \"$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 1088 "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:1094: \"$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 1105 "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:1111: \"$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 fcntl.h malloc.h memory.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1139: 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 1144 "configure" +#include "confdefs.h" +#include <$ac_hdr> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1149: \"$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 strerror +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1179: 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 1184 "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:1207: \"$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 +LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" +fi +done + + +echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6 +echo "configure:1234: checking for main in -lnsl" >&5 +ac_lib_var=`echo nsl'_'main | 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 1242 "configure" +#include "confdefs.h" + +int main() { +main() +; return 0; } +EOF +if { (eval echo configure:1249: \"$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 main in -lsocket""... $ac_c" 1>&6 +echo "configure:1277: checking for main in -lsocket" >&5 +ac_lib_var=`echo socket'_'main | 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 1285 "configure" +#include "confdefs.h" + +int main() { +main() +; return 0; } +EOF +if { (eval echo configure:1292: \"$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 ANSI C header files""... $ac_c" 1>&6 +echo "configure:1321: 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 1326 "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:1334: \"$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 1351 "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 1369 "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 1390 "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:1401: \"$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 int32_t""... $ac_c" 1>&6 +echo "configure:1425: checking for int32_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_int32_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1430 "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])int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_int32_t=yes +else + rm -rf conftest* + ac_cv_type_int32_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_int32_t" 1>&6 +if test $ac_cv_type_int32_t = no; then + cat >> confdefs.h <<\EOF +#define int32_t int +EOF + +fi + +echo $ac_n "checking for u_int32_t""... $ac_c" 1>&6 +echo "configure:1458: checking for u_int32_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_u_int32_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 1463 "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])u_int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_u_int32_t=yes +else + rm -rf conftest* + ac_cv_type_u_int32_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_u_int32_t" 1>&6 +if test $ac_cv_type_u_int32_t = no; then + cat >> confdefs.h <<\EOF +#define u_int32_t u_int +EOF + +fi + + +rm -f os-proto.h + if test "${LBL_CFLAGS+set}" = set; then + V_CCOPT="$V_CCOPT ${LBL_CFLAGS}" + fi + if test -f .devel ; then + if test "$GCC" = yes ; then + if test "$SHLICC2" = yes ; then + ac_cv_lbl_gcc_vers=2 + V_CCOPT="`echo $V_CCOPT | sed -e 's/-O/-O2/'`" + else + echo $ac_n "checking gcc version""... $ac_c" 1>&6 +echo "configure:1502: checking gcc version" >&5 + if eval "test \"`echo '$''{'ac_cv_lbl_gcc_vers'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_lbl_gcc_vers=`$CC --version 2>&1 | \ + sed -e 's/\..*//'` +fi + + echo "$ac_t""$ac_cv_lbl_gcc_vers" 1>&6 + if test $ac_cv_lbl_gcc_vers -gt 1 ; then + V_CCOPT="`echo $V_CCOPT | sed -e 's/-O/-O2/'`" + fi + fi + if test "${LBL_CFLAGS+set}" != set; then + if test "$ac_cv_prog_cc_g" = yes ; then + V_CCOPT="-g $V_CCOPT" + fi + V_CCOPT="$V_CCOPT -Wall" + if test $ac_cv_lbl_gcc_vers -gt 1 ; then + V_CCOPT="$V_CCOPT -Wmissing-prototypes -Wstrict-prototypes" + fi + fi + else + case "$target_os" in + + irix6*) + V_CCOPT="$V_CCOPT -fullwarn -n32" + ;; + + *) + ;; + esac + fi + os=`echo $target_os | sed -e 's/\([0-9][0-9]*\)[^0-9].*$/\1/'` + name="lbl/os-$os.h" + if test -f $name ; then + ln -s $name os-proto.h + cat >> confdefs.h <<\EOF +#define HAVE_OS_PROTO_H 1 +EOF + + else + echo "configure: warning: can't find $name" 1>&2 + fi + fi + +if test -r lbl/gnuc.h ; then + rm -f gnuc.h + ln -s lbl/gnuc.h gnuc.h +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:1568: 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' + + +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 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# 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" | 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%@target@%$target%g +s%@target_alias@%$target_alias%g +s%@target_cpu@%$target_cpu%g +s%@target_vendor@%$target_vendor%g +s%@target_os@%$target_os%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%@SHLICC2@%$SHLICC2%g +s%@CC@%$CC%g +s%@CPP@%$CPP%g +s%@LIBOBJS@%$LIBOBJS%g +s%@V_CCOPT@%$V_CCOPT%g +s%@V_INCLS@%$V_INCLS%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@INSTALL_DATA@%$INSTALL_DATA%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"} +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* + +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 + + +if test -f .devel ; then + make depend +fi +exit 0 diff --git a/contrib/nslint-2.1a3/configure.in b/contrib/nslint-2.1a3/configure.in new file mode 100644 index 00000000..26e69c54 --- /dev/null +++ b/contrib/nslint-2.1a3/configure.in @@ -0,0 +1,47 @@ +dnl @(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/configure.in,v 1.1 2001/12/21 04:12:03 marka Exp $ (LBL) +dnl +dnl Copyright (c) 1995, 1996, 1997 +dnl The Regents of the University of California. All rights reserved. +dnl +dnl Process this file with autoconf to produce a configure script. +dnl + +AC_INIT(nslint.c) + +AC_CANONICAL_SYSTEM + +umask 002 + +if test -z "$PWD" ; then + PWD=`pwd` +fi + +AC_LBL_C_INIT(V_CCOPT, V_INCLS) + +AC_CHECK_HEADERS(fcntl.h malloc.h memory.h) + +AC_REPLACE_FUNCS(strerror) +AC_CHECK_LIB(nsl, main) +AC_CHECK_LIB(socket, main) + +AC_CHECK_TYPE(int32_t, int) +AC_CHECK_TYPE(u_int32_t, u_int) + +AC_LBL_DEVEL(V_CCOPT) + +if test -r lbl/gnuc.h ; then + rm -f gnuc.h + ln -s lbl/gnuc.h gnuc.h +fi + +AC_SUBST(V_CCOPT) +AC_SUBST(V_INCLS) + +AC_PROG_INSTALL + +AC_OUTPUT(Makefile) + +if test -f .devel ; then + make depend +fi +exit 0 diff --git a/contrib/nslint-2.1a3/install-sh b/contrib/nslint-2.1a3/install-sh new file mode 100755 index 00000000..ebc66913 --- /dev/null +++ b/contrib/nslint-2.1a3/install-sh @@ -0,0 +1,250 @@ +#! /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 diff --git a/contrib/nslint-2.1a3/lbl/gnuc.h b/contrib/nslint-2.1a3/lbl/gnuc.h new file mode 100644 index 00000000..f73ec70a --- /dev/null +++ b/contrib/nslint-2.1a3/lbl/gnuc.h @@ -0,0 +1,43 @@ +/* @(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/lbl/gnuc.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) */ + +/* Define __P() macro, if necessary */ +#ifndef __P +#if __STDC__ +#define __P(protos) protos +#else +#define __P(protos) () +#endif +#endif + +/* inline foo */ +#ifdef __GNUC__ +#define inline __inline +#else +#define inline +#endif + +/* + * Handle new and old "dead" routine prototypes + * + * For example: + * + * __dead void foo(void) __attribute__((volatile)); + * + */ +#ifdef __GNUC__ +#ifndef __dead +#define __dead volatile +#endif +#if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) +#ifndef __attribute__ +#define __attribute__(args) +#endif +#endif +#else +#ifndef __dead +#define __dead +#endif +#ifndef __attribute__ +#define __attribute__(args) +#endif +#endif diff --git a/contrib/nslint-2.1a3/lbl/os-irix5.h b/contrib/nslint-2.1a3/lbl/os-irix5.h new file mode 100644 index 00000000..7f844ee9 --- /dev/null +++ b/contrib/nslint-2.1a3/lbl/os-irix5.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 1994, 1995, 1996 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * @(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/lbl/os-irix5.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) + */ + +/* Prototypes missing in IRIX 5 */ +#ifdef __STDC__ +struct ether_addr; +#endif +int ether_hostton(char *, struct ether_addr *); +char *ether_ntoa(struct ether_addr *); +#ifdef __STDC__ +struct utmp; +#endif +void login(struct utmp *); +int setenv(const char *, const char *, int); +int sigblock(int); +int sigsetmask(int); +int snprintf(char *, size_t, const char *, ...); +time_t time(time_t *); diff --git a/contrib/nslint-2.1a3/lbl/os-osf3.h b/contrib/nslint-2.1a3/lbl/os-osf3.h new file mode 100644 index 00000000..73109bc8 --- /dev/null +++ b/contrib/nslint-2.1a3/lbl/os-osf3.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 1995, 1996 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * @(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/lbl/os-osf3.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) + */ + +/* Prototypes missing in osf3 */ +int flock(int, int); +int ioctl(int, int, caddr_t); +int iruserok(u_int, int, char *, char *); +int pfopen(char *, int); +int rcmd(char **, u_short, const char *, const char *, const char *, int *); +int rresvport(int *); +int snprintf(char *, size_t, const char *, ...); +void sync(void); diff --git a/contrib/nslint-2.1a3/lbl/os-solaris2.h b/contrib/nslint-2.1a3/lbl/os-solaris2.h new file mode 100644 index 00000000..ba91e712 --- /dev/null +++ b/contrib/nslint-2.1a3/lbl/os-solaris2.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 1993, 1994, 1995, 1996, 1997, 2000 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * @(#) $Id: os-solaris2.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) + */ + +/* Prototypes missing in SunOS 5 */ +int daemon(int, int); +int dn_expand(const u_char *, const u_char *, const u_char *, char *, int); +int dn_skipname(const u_char *, const u_char *); +int flock(int, int); +int getdtablesize(void); +int gethostname(char *, int); +int getpagesize(void); +char *getusershell(void); +char *getwd(char *); +int iruserok(u_int, int, char *, char *); +#ifdef __STDC__ +struct utmp; +void login(struct utmp *); +#endif +int logout(const char *); +int res_query(const char *, int, int, u_char *, int); +int setenv(const char *, const char *, int); +#if defined(_STDIO_H) && defined(HAVE_SETLINEBUF) +int setlinebuf(FILE *); +#endif +int sigblock(int); +int sigsetmask(int); +char *strerror(int); +int snprintf(char *, size_t, const char *, ...); +int strcasecmp(const char *, const char *); +void unsetenv(const char *); diff --git a/contrib/nslint-2.1a3/lbl/os-sunos4.h b/contrib/nslint-2.1a3/lbl/os-sunos4.h new file mode 100644 index 00000000..3c651e45 --- /dev/null +++ b/contrib/nslint-2.1a3/lbl/os-sunos4.h @@ -0,0 +1,215 @@ +/* + * Copyright (c) 1989, 1990, 1993, 1994, 1995, 1996 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * @(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/lbl/os-sunos4.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) + */ + +/* Prototypes missing in SunOS 4 */ +#ifdef FILE +int _filbuf(FILE *); +int _flsbuf(u_char, FILE *); +int fclose(FILE *); +int fflush(FILE *); +int fgetc(FILE *); +int fprintf(FILE *, const char *, ...); +int fputc(int, FILE *); +int fputs(const char *, FILE *); +u_int fread(void *, u_int, u_int, FILE *); +int fseek(FILE *, long, int); +u_int fwrite(const void *, u_int, u_int, FILE *); +int pclose(FILE *); +void rewind(FILE *); +void setbuf(FILE *, char *); +int setlinebuf(FILE *); +int ungetc(int, FILE *); +int vfprintf(FILE *, const char *, ...); +int vprintf(const char *, ...); +#endif + +#if __GNUC__ <= 1 +int read(int, char *, u_int); +int write(int, char *, u_int); +#endif + +long a64l(const char *); +#ifdef __STDC__ +struct sockaddr; +#endif +int accept(int, struct sockaddr *, int *); +int bind(int, struct sockaddr *, int); +int bcmp(const void *, const void *, u_int); +void bcopy(const void *, void *, u_int); +void bzero(void *, int); +int chroot(const char *); +int close(int); +void closelog(void); +int connect(int, struct sockaddr *, int); +char *crypt(const char *, const char *); +int daemon(int, int); +int fchmod(int, int); +int fchown(int, int, int); +void endgrent(void); +void endpwent(void); +void endservent(void); +#ifdef __STDC__ +struct ether_addr; +#endif +struct ether_addr *ether_aton(const char *); +int flock(int, int); +#ifdef __STDC__ +struct stat; +#endif +int fstat(int, struct stat *); +#ifdef __STDC__ +struct statfs; +#endif +int fstatfs(int, struct statfs *); +int fsync(int); +#ifdef __STDC__ +struct timeb; +#endif +int ftime(struct timeb *); +int ftruncate(int, off_t); +int getdtablesize(void); +long gethostid(void); +int gethostname(char *, int); +int getopt(int, char * const *, const char *); +int getpagesize(void); +char *getpass(char *); +int getpeername(int, struct sockaddr *, int *); +int getpriority(int, int); +#ifdef __STDC__ +struct rlimit; +#endif +int getrlimit(int, struct rlimit *); +int getsockname(int, struct sockaddr *, int *); +int getsockopt(int, int, int, char *, int *); +#ifdef __STDC__ +struct timeval; +struct timezone; +#endif +int gettimeofday(struct timeval *, struct timezone *); +char *getusershell(void); +char *getwd(char *); +int initgroups(const char *, int); +int ioctl(int, int, caddr_t); +int iruserok(u_long, int, char *, char *); +int isatty(int); +int killpg(int, int); +int listen(int, int); +#ifdef __STDC__ +struct utmp; +#endif +void login(struct utmp *); +int logout(const char *); +off_t lseek(int, off_t, int); +int lstat(const char *, struct stat *); +int mkstemp(char *); +char *mktemp(char *); +int munmap(caddr_t, int); +void openlog(const char *, int, int); +void perror(const char *); +int printf(const char *, ...); +int puts(const char *); +long random(void); +int readlink(const char *, char *, int); +#ifdef __STDC__ +struct iovec; +#endif +int readv(int, struct iovec *, int); +int recv(int, char *, u_int, int); +int recvfrom(int, char *, u_int, int, struct sockaddr *, int *); +int rename(const char *, const char *); +int rcmd(char **, u_short, char *, char *, char *, int *); +int rresvport(int *); +int send(int, char *, u_int, int); +int sendto(int, char *, u_int, int, struct sockaddr *, int); +int setenv(const char *, const char *, int); +int seteuid(int); +int setpriority(int, int, int); +int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); +int setpgrp(int, int); +void setpwent(void); +int setrlimit(int, struct rlimit *); +void setservent(int); +int setsockopt(int, int, int, char *, int); +int shutdown(int, int); +int sigblock(int); +void (*signal (int, void (*) (int))) (int); +int sigpause(int); +int sigsetmask(int); +#ifdef __STDC__ +struct sigvec; +#endif +int sigvec(int, struct sigvec *, struct sigvec*); +int snprintf(char *, size_t, const char *, ...); +int socket(int, int, int); +int socketpair(int, int, int, int *); +int symlink(const char *, const char *); +void srandom(int); +int sscanf(char *, const char *, ...); +int stat(const char *, struct stat *); +int statfs(char *, struct statfs *); +char *strerror(int); +int strcasecmp(const char *, const char *); +#ifdef __STDC__ +struct tm; +#endif +int strftime(char *, int, char *, struct tm *); +int strncasecmp(const char *, const char *, int); +long strtol(const char *, char **, int); +void sync(void); +void syslog(int, const char *, ...); +int system(const char *); +long tell(int); +time_t time(time_t *); +char *timezone(int, int); +int tolower(int); +int toupper(int); +int truncate(char *, off_t); +void unsetenv(const char *); +int vfork(void); +int vsprintf(char *, const char *, ...); +int writev(int, struct iovec *, int); +#ifdef __STDC__ +struct rusage; +#endif +int utimes(const char *, struct timeval *); +#if __GNUC__ <= 1 +int wait(int *); +pid_t wait3(int *, int, struct rusage *); +#endif + +/* Ugly signal hacking */ +#ifdef SIG_ERR +#undef SIG_ERR +#define SIG_ERR (void (*)(int))-1 +#undef SIG_DFL +#define SIG_DFL (void (*)(int))0 +#undef SIG_IGN +#define SIG_IGN (void (*)(int))1 + +#ifdef KERNEL +#undef SIG_CATCH +#define SIG_CATCH (void (*)(int))2 +#endif +#undef SIG_HOLD +#define SIG_HOLD (void (*)(int))3 +#endif diff --git a/contrib/nslint-2.1a3/lbl/os-ultrix4.h b/contrib/nslint-2.1a3/lbl/os-ultrix4.h new file mode 100644 index 00000000..828771af --- /dev/null +++ b/contrib/nslint-2.1a3/lbl/os-ultrix4.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 1990, 1993, 1994, 1995, 1996 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * @(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/lbl/os-ultrix4.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) + */ + +/* Prototypes missing in Ultrix 4 */ +int bcmp(const char *, const char *, u_int); +void bcopy(const void *, void *, u_int); +void bzero(void *, u_int); +void endservent(void); +int getopt(int, char * const *, const char *); +#ifdef __STDC__ +struct timeval; +struct timezone; +#endif +int gettimeofday(struct timeval *, struct timezone *); +int ioctl(int, int, caddr_t); +int pfopen(char *, int); +int setlinebuf(FILE *); +int socket(int, int, int); +int strcasecmp(const char *, const char *); diff --git a/contrib/nslint-2.1a3/mkdep b/contrib/nslint-2.1a3/mkdep new file mode 100755 index 00000000..2a9c221b --- /dev/null +++ b/contrib/nslint-2.1a3/mkdep @@ -0,0 +1,109 @@ +#!/bin/sh - +# +# Copyright (c) 1994, 1996 +# The Regents of the University of California. All rights reserved. +# +# Redistribution and use in source and binary forms are permitted +# provided that this notice is preserved and that due credit is given +# to the University of California at Berkeley. The name of the University +# may not be used to endorse or promote products derived from this +# software without specific prior written permission. This software +# is provided ``as is'' without express or implied warranty. +# +# @(#)mkdep.sh 5.11 (Berkeley) 5/5/88 +# + +PATH=/bin:/usr/bin:/usr/ucb:/usr/local:/usr/local/bin +export PATH + +MAKE=Makefile # default makefile name is "Makefile" +CC=cc # default C compiler is "cc" + +while : + do case "$1" in + # -c allows you to specify the C compiler + -c) + CC=$2 + shift; shift ;; + + # -f allows you to select a makefile name + -f) + MAKE=$2 + shift; shift ;; + + # the -p flag produces "program: program.c" style dependencies + # so .o's don't get produced + -p) + SED='s;\.o;;' + shift ;; + *) + break ;; + esac +done + +if [ $# = 0 ] ; then + echo 'usage: mkdep [-p] [-c cc] [-f makefile] [flags] file ...' + exit 1 +fi + +if [ ! -w $MAKE ]; then + echo "mkdep: no writeable file \"$MAKE\"" + exit 1 +fi + +TMP=/tmp/mkdep$$ + +trap 'rm -f $TMP ; exit 1' 1 2 3 13 15 + +cp $MAKE ${MAKE}.bak + +sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP + +cat << _EOF_ >> $TMP +# DO NOT DELETE THIS LINE -- mkdep uses it. +# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. + +_EOF_ + +# If your compiler doesn't have -M, add it. If you can't, the next two +# lines will try and replace the "cc -M". The real problem is that this +# hack can't deal with anything that requires a search path, and doesn't +# even try for anything using bracket (<>) syntax. +# +# egrep '^#include[ ]*".*"' /dev/null $* | +# sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' | + +# XXX this doesn't work with things like "-DDECLWAITSTATUS=union\ wait" +$CC -M $* | +sed " + s; \./; ;g + $SED" | +awk '{ + if ($1 != prev) { + if (rec != "") + print rec; + rec = $0; + prev = $1; + } + else { + if (length(rec $2) > 78) { + print rec; + rec = $0; + } + else + rec = rec " " $2 + } +} +END { + print rec +}' >> $TMP + +cat << _EOF_ >> $TMP + +# IF YOU PUT ANYTHING HERE IT WILL GO AWAY +_EOF_ + +# copy to preserve permissions +cp $TMP $MAKE +rm -f ${MAKE}.bak $TMP +exit 0 diff --git a/contrib/nslint-2.1a3/nslint.8 b/contrib/nslint-2.1a3/nslint.8 new file mode 100644 index 00000000..98c1ebea --- /dev/null +++ b/contrib/nslint-2.1a3/nslint.8 @@ -0,0 +1,451 @@ +.\" @(#) $Id: nslint.8,v 1.1 2001/12/21 04:12:03 marka Exp $ (LBL) +.\" +.\" Copyright (c) 1994, 1996, 1997, 1999, 2001 +.\" The Regents of the University of California. All rights reserved. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that: (1) source code distributions +.\" retain the above copyright notice and this paragraph in its entirety, (2) +.\" distributions including binary code include the above copyright notice and +.\" this paragraph in its entirety in the documentation or other materials +.\" provided with the distribution, and (3) all advertising materials mentioning +.\" features or use of this software display the following acknowledgement: +.\" ``This product includes software developed by the University of California, +.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of +.\" the University nor the names of its contributors may be used to endorse +.\" or promote products derived from this software without specific prior +.\" written permission. +.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED +.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +.\" +.TH nslint 8 "20 March 2001" +.UC 4 +.SH NAME +nslint - perform consistency checks on dns files +.SH SYNOPSIS +.B nslint +[ +.B -d +] [ +.B -b +.I named.boot +] [ +.B -B +.I nslint.boot +] +.br +.B nslint +[ +.B -d +] [ +.B -c +.I named.conf +] [ +.B -C +.I nslint.conf +] +.SH DESCRIPTION +.B Nslint +reads the nameserver configuration files and performs a number of +consistency checks on the dns records. If any problems are discovered, +error messages are displayed on +.I stderr +and +.B nslint +exits with a non-zero status. +.LP +Here is a short list of errors +.B nslint +detects: +.IP +Records that are malformed. +.IP +Names that contain dots but are missing a trailing dot. +.IP +.B PTR +records with names that are missing a trailing dot. +.IP +Names that contain illegal characters (rfc1034). +.IP +.B A +records +without matching +.B PTR +records +.IP +.B PTR +records +without matching +.B A +records +.IP +Names with more than one address on the same subnet. +.IP +Addresses in use by more than one name. +.IP +Names with +.B CNAME +and other records (rfc1033). +.IP +Unknown service and/or protocol keywords in +.B WKS +records. +.IP +Missing quotes. +.LP +.SH OPTIONS +.TP +.B -b +Specify an alternate +.I named.boot +file. The default is +.IR /etc/named.boot . +.TP +.TP +.B -c +Specify an alternate +.I named.conf +file. The default is +.IR /etc/named.conf . +.TP +.B -B +Specify an alternate +.I nslint.boot +file. The default is +.I nslint.boot +in the last +.B directory +line processed in +.I named.boot +(or the current working directory). +This file is processed like a second +.IR named.boot . +The most common use is to tell +.B nslint +about +.B A +records that match +.B PTR +records that point outside the domains listed in +.IR named.boot . +.TP +.B -C +Specify an alternate +.I nslint.conf +file. The default is +.I nslint.conf +in the last +.B directory +line processed in +.I named.conf +(or the current working directory). +This file is processed like a second +.IR named.conf . +.TP +.B -d +Raise the debugging level. Debugging information is +displayed on +.IR stdout . +.LP +.B Nslint +knows how to read old style +.I named.boot +and BIND 8's new +.I named.conf +files. If both files exist, +.B nslint +will prefer +.I named.conf +(on the theory that you forgot to delete +.I named.boot +when you upgraded to BIND 8). +.LP +.SH "ADVANCED CONFIGURATION" +There are some cases where it is necessary to use the +advanced configuration features of +.BR nslint . +Advanced configuration is done with the +.I nslint.boot +file. +.LP +The most common is when a site has a demilitarized zone (DMZ). +The problem here is that the DMZ network will have +.B PTR +records for hosts outside its domain. For example lets say +we have +.I 128.0.rev +with: +.LP +.RS +.nf +.sp .5 +1.1 604800 in ptr gateway.lbl.gov. +2.1 604800 in ptr gateway.es.net. +.sp .5 +.fi +.RE +.LP +Obviously we will define an +.B A +record for +.I gateway.lbl.gov +pointing to +.I 128.0.1.1 +but we will get errors because there is no +.B A +record defined for +.IR gateway.es.net . +The solution is to create a +.I nslint.boot +file (in the same directory as the other dns files) +with: +.LP +.RS +.nf +.sp .5 +primary es.net nslint.es.net +.sp .5 +.fi +.RE +.LP +And then create the file +.I nslint.es.net +with: +.LP +.RS +.nf +.sp .5 +gateway 1 in a 128.0.1.2 +.sp .5 +.fi +.RE +.LP +Another problem occurs when there is a +.B CNAME +that points to a host outside the local domains. Let's say we have +.I info.lbl.gov +pointing to +.IR larry.es.net : +.LP +.RS +.nf +.sp .5 +info 604800 in cname larry.es.net. +.sp .5 +.fi +.RE +.LP +In this case we would need: +.LP +.RS +.nf +.sp .5 +primary es.net nslint.es.net +.sp .5 +.fi +.RE +.LP +in +.I nslint.boot +and: +.LP +.RS +.nf +.sp .5 +larry 1 in txt "place holder" +.sp .5 +.fi +.RE +.LP +.IR nslint.es.net . +.LP +One last problem +when a pseudo host is setup to allow two more +more actual hosts provide a service. For, let's say that +.I lbl.gov +contains: +.LP +.RS +.nf +.sp .5 +server 604800 in a 128.0.6.6 +server 604800 in a 128.0.6.94 +; +tom 604800 in a 128.0.6.6 +tom 604800 in mx 0 lbl.gov. +; +jerry 604800 in a 128.0.6.94 +jerry 604800 in mx 0 lbl.gov. +.sp .5 +.fi +.RE +.LP +In this case +.B nslint +would complain about missing +.B PTR +records and ip addresses in use by more than one host. +To suppress these warnings, add you would the lines: +.LP +.RS +.nf +.sp .5 +primary lbl.gov nslint.lbl.gov +primary 0.128.in-addr.arpa nslint.128.0.rev +.sp .5 +.fi +.RE +.LP +to +.I nslint.boot +and create +.I nslint.lbl.gov +with: +.LP +.RS +.nf +.sp .5 +server 1 in allowdupa 128.0.6.6 +server 1 in allowdupa 128.0.6.94 +.sp .5 +.fi +.RE +.LP +and create +.I nslint.128.0.rev +with: +.LP +.RS +.nf +.sp .5 +6.6 604800 in ptr server.lbl.gov. +94.6 604800 in ptr server.lbl.gov. +.sp .5 +.fi +.RE +.LP +In this example, the +.B allowdupa +keyword tells +.B nslint +that it's ok for +.I 128.0.6.6 +and +.I 128.0.6.94 +to be shared by +.IR server.lbl.gov , +.IR tom.lbl.gov , +and +.IR jerry.lbl.gov . +.LP +One last +.B nslint +feature helps detect hosts that have mistakenly had two ip addresses +assigned on the same subnet. This can happen when two different +people request an ip address for the same hostname or when someone +forgets an address has been assigned and requests a new number. +.LP +To detect such +.B A +records, add a +.B nslint +section to your +.I nslint.conf +containing something similar to: +.LP +.RS +.nf +.sp .5 +nslint { +.RS +network "128.0.6/22"; +network "128.0.6 255.255.252.0"; +.RE +}; +.sp .5 +.fi +.RE +.LP +The two network lines in this example are equivalent ways of saying the same +thing; that subnet +.I 128.0.6 +has a 22 bit wide subnet mask. +.LP +If you are using +.IR nslint.boot , +the syntax would be: +.LP +.RS +.nf +.sp .5 +network 128.0.6/22 +network 128.0.6 255.255.252.0 +.sp .5 +.fi +.RE +.LP +Again this shows two ways of saying the same thing. +.LP +Using information from the above +.B network +statement, +.B nslint +would would flag the following +.B A +records as being in error: +.LP +.RS +.nf +.sp .5 +server 1 in a 128.0.6.48 +server 1 in a 128.0.7.16 +.sp .5 +.fi +.RE +.LP +Note that if you specify any +.B network +lines in your +.I nslint.conf +or +.I nslint.boot +files, +.B nslint +requires you to include lines for all networks; +otherwise you might forget to add +.B network +lines for new networks. +.LP +.SH FILES +.na +.nh +.nf +/etc/named.boot - default named configuration file +nslint.boot - default nslint configuration file +.ad +.hy +.fi +.LP +.SH "SEE ALSO" +.na +.nh +.IR named (8), +rfc1033, +rfc1034 +.ad +.hy +.SH AUTHOR +Craig Leres of the +Lawrence Berkeley National Laboratory, University of California, Berkeley, CA. +.LP +The current version is available via anonymous ftp: +.LP +.RS +.I ftp://ftp.ee.lbl.gov/nslint.tar.gz +.RE +.SH BUGS +Please send bug reports to nslint@ee.lbl.gov. +.LP +Not everyone is guaranteed to agree with all the checks done. diff --git a/contrib/nslint-2.1a3/nslint.c b/contrib/nslint-2.1a3/nslint.c new file mode 100644 index 00000000..8ce95050 --- /dev/null +++ b/contrib/nslint-2.1a3/nslint.c @@ -0,0 +1,2382 @@ +/* + * Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ +#ifndef lint +static const char copyright[] = + "@(#) Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001\n\ +The Regents of the University of California. All rights reserved.\n"; +static const char rcsid[] = + "@(#) $Id: nslint.c,v 1.1 2001/12/21 04:12:04 marka Exp $ (LBL)"; +#endif +/* + * nslint - perform consistency checks on dns files + */ + +#include <sys/types.h> +#include <sys/stat.h> + +#include <netinet/in.h> + +#include <arpa/inet.h> + +#include <ctype.h> +#include <errno.h> +#ifdef HAVE_FCNTL_H +#include <fcntl.h> +#endif +#ifdef HAVE_MALLOC_H +#include <malloc.h> +#endif +#ifdef HAVE_MEMORY_H +#include <memory.h> +#endif +#include <netdb.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <unistd.h> + +#include "savestr.h" + +#include "gnuc.h" +#ifdef HAVE_OS_PROTO_H +#include "os-proto.h" +#endif + +#define NSLINTBOOT "nslint.boot" /* default nslint.boot file */ +#define NSLINTCONF "nslint.conf" /* default nslint.conf file */ + +/* item struct */ +struct item { + char *host; /* pointer to hostname */ + u_int32_t addr; /* ip address */ + u_int ttl; /* ttl of A records */ + int records; /* resource records seen */ + int flags; /* flags word */ +}; + +/* Resource records seen */ +#define REC_A 0x0001 +#define REC_PTR 0x0002 +#define REC_WKS 0x0004 +#define REC_HINFO 0x0008 +#define REC_MX 0x0010 +#define REC_CNAME 0x0020 +#define REC_NS 0x0040 +#define REC_SOA 0x0080 +#define REC_RP 0x0100 +#define REC_TXT 0x0200 +#define REC_SRV 0x0400 + +/* These aren't real records */ +#define REC_OTHER 0x0800 +#define REC_REF 0x1000 +#define REC_UNKNOWN 0x2000 + +/* Test for records we want to map to REC_OTHER */ +#define MASK_TEST_REC (REC_WKS | REC_HINFO | \ + REC_MX | REC_SOA | REC_RP | REC_TXT | REC_SRV | REC_UNKNOWN) + +/* Mask away records we don't care about in the final processing to REC_OTHER */ +#define MASK_CHECK_REC \ + (REC_A | REC_PTR | REC_CNAME | REC_REF | REC_OTHER) + +/* Test for records we want to check for duplicate name detection */ +#define MASK_TEST_DUP \ + (REC_A | REC_HINFO) + +/* Flags */ +#define FLG_SELFMX 0x001 /* mx record refers to self */ +#define FLG_MXREF 0x002 /* this record referred to by a mx record */ +#define FLG_SMTPWKS 0x004 /* saw wks with smtp/tcp */ +#define FLG_ALLOWDUPA 0x008 /* allow duplicate a records */ + +/* Test for smtp problems */ +#define MASK_TEST_SMTP \ + (FLG_SELFMX | FLG_SMTPWKS) + + +#define ITEMSIZE (1 << 17) /* power of two */ +#define ITEMHASH(str, h, p) \ + for (p = str, h = 0; *p != '.' && *p != '\0';) h = (h << 5) - h + *p++ + +struct item items[ITEMSIZE]; +int itemcnt; /* count of items */ + +/* Hostname string storage */ +#define STRSIZE 8192; /* size to malloc when more space is needed */ +char *strptr; /* pointer to string pool */ +int strsize; /* size of space left in pool */ + +int debug; +int errors; +char *bootfile = "/etc/named.boot"; +char *conffile = "/etc/named.conf"; +char *nslintboot; +char *nslintconf; +char *prog; +char *cwd = "."; + +char **protoserv; /* valid protocol/service names */ +int protoserv_init; +int protoserv_last; +int protoserv_len; + +static char inaddr[] = ".in-addr.arpa."; + +/* SOA record */ +#define SOA_SERIAL 0 +#define SOA_REFRESH 1 +#define SOA_RETRY 2 +#define SOA_EXPIRE 3 +#define SOA_MINIMUM 4 + +static u_int soaval[5]; +static int nsoaval; +#define NSOAVAL (sizeof(soaval) / sizeof(soaval[0])) + +/* Forwards */ +static inline void add_domain(char *, const char *); +int checkdots(const char *); +void checkdups(struct item *, int); +int checkserv(const char *, char **p); +int checkwks(FILE *, char *, int *, char **); +int cmpaddr(const void *, const void *); +int cmphost(const void *, const void *); +int doboot(const char *, int); +int doconf(const char *, int); +void initprotoserv(void); +char *intoa(u_int32_t); +int main(int, char **); +int nslint(void); +int parseinaddr(const char *, u_int32_t *, u_int32_t *); +int parsenetwork(const char *, char **); +u_int32_t parseptr(const char *, u_int32_t, u_int32_t, char **); +char *parsequoted(char *); +int parsesoa(const char *, char **); +void process(const char *, const char *, const char *); +int rfc1034host(const char *, int); +int updateitem(const char *, u_int32_t, int, u_int, int); +__dead void usage(void) __attribute__((volatile)); + +extern char *optarg; +extern int optind, opterr; + +/* add domain if necessary */ +static inline void +add_domain(register char *name, register const char *domain) +{ + register char *cp; + + /* Kill trailing white space and convert to lowercase */ + for (cp = name; *cp != '\0' && !isspace(*cp); ++cp) + if (isupper(*cp)) + *cp = tolower(*cp); + *cp-- = '\0'; + /* If necessary, append domain */ + if (cp >= name && *cp++ != '.') { + if (*domain != '.') + *cp++ = '.'; + (void)strcpy(cp, domain); + } + /* XXX should we insure a trailing dot? */ +} + +int +main(int argc, char **argv) +{ + register char *cp; + register int op, status, i, donamedboot, donamedconf; + + if ((cp = strrchr(argv[0], '/')) != NULL) + prog = cp + 1; + else + prog = argv[0]; + + donamedboot = 0; + donamedconf = 0; + while ((op = getopt(argc, argv, "b:c:B:C:d")) != -1) + switch (op) { + + case 'b': + bootfile = optarg; + ++donamedboot; + break; + + case 'c': + conffile = optarg; + ++donamedconf; + break; + + case 'B': + nslintboot = optarg; + ++donamedboot; + break; + + case 'C': + nslintconf = optarg; + ++donamedconf; + break; + + case 'd': + ++debug; + break; + + default: + usage(); + } + if (optind != argc || (donamedboot && donamedconf)) + usage(); + + if (donamedboot) + status = doboot(bootfile, 1); + else if (donamedconf) + status = doconf(conffile, 1); + else { + status = doconf(conffile, 0); + if (status < 0) { + status = doboot(bootfile, 1); + ++donamedboot; + } else + ++donamedconf; + } + + if (donamedboot) { + if (nslintboot != NULL) + status |= doboot(nslintboot, 1); + else if ((i = doboot(NSLINTBOOT, 0)) > 0) + status |= i; + } else { + if (nslintconf != NULL) + status |= doconf(nslintconf, 1); + else if ((i = doconf(NSLINTCONF, 0)) > 0) + status |= i; + } + status |= nslint(); + exit (status); +} + +struct netlist { + u_int32_t net; + u_int32_t mask; +}; + +static struct netlist *netlist; +static u_int netlistsize; /* size of array */ +static u_int netlistcnt; /* next free element */ + +static u_int32_t +findmask(u_int32_t addr) +{ + register int i; + + for (i = 0; i < netlistcnt; ++i) + if ((addr & netlist[i].mask) == netlist[i].net) + return (netlist[i].mask); + return (0); +} + +int +parsenetwork(register const char *cp, register char **errstrp) +{ + register int i, w; + register u_int32_t net, mask; + register u_int32_t o; + register int shift; + static char errstr[132]; + + while (isspace(*cp)) + ++cp; + net = 0; + mask = 0; + shift = 24; + while (isdigit(*cp) && shift >= 0) { + o = 0; + do { + o = o * 10 + (*cp++ - '0'); + } while (isdigit(*cp)); + net |= o << shift; + shift -= 8; + if (*cp != '.') + break; + ++cp; + } + + + if (isspace(*cp)) { + ++cp; + while (isspace(*cp)) + ++cp; + mask = htonl(inet_addr(cp)); + if ((int)mask == -1) { + *errstrp = errstr; + (void)sprintf(errstr, "bad mask \"%s\"", cp); + return (0); + } + i = 0; + while (isdigit(*cp)) + ++cp; + for (i = 0; i < 3 && *cp == '.'; ++i) { + ++cp; + while (isdigit(*cp)) + ++cp; + } + if (i != 3) { + *errstrp = "wrong number of dots in mask"; + return (0); + } + } else if (*cp == '/') { + ++cp; + w = atoi(cp); + do { + ++cp; + } while (isdigit(*cp)); + if (w < 1 || w > 32) { + *errstrp = "bad mask width"; + return (0); + } + mask = 0xffffffff << (32 - w); + } else { + *errstrp = "garbage after net"; + return (0); + } + + while (isspace(*cp)) + ++cp; + + if (*cp != '\0') { + *errstrp = "trailing garbage"; + return (0); + } + + /* Finaly sanity checks */ + if ((net & ~ mask) != 0) { + *errstrp = errstr; + (void)sprintf(errstr, "host bits set in net \"%s\"", + intoa(net)); + return (0); + } + + /* Make sure there's room */ + if (netlistsize <= netlistcnt) { + if (netlistsize == 0) { + netlistsize = 32; + netlist = (struct netlist *) + malloc(netlistsize * sizeof(*netlist)); + } else { + netlistsize <<= 1; + netlist = (struct netlist *) + realloc(netlist, netlistsize * sizeof(*netlist)); + } + if (netlist == NULL) { + fprintf(stderr, "%s: nslint: malloc/realloc: %s\n", + prog, strerror(errno)); + exit(1); + } + } + + /* Add to list */ + netlist[netlistcnt].net = net; + netlist[netlistcnt].mask = mask; + ++netlistcnt; + + return (1); +} + +int +doboot(register const char *file, register int mustexist) +{ + register int n; + register char *cp, *cp2; + register FILE *f; + char *errstr; + char buf[1024], name[128]; + + errno = 0; + f = fopen(file, "r"); + if (f == NULL) { + /* Not an error if it doesn't exist */ + if (!mustexist && errno == ENOENT) { + if (debug > 1) + printf( + "%s: doit: %s doesn't exist (ignoring)\n", + prog, file); + return (-1); + } + fprintf(stderr, "%s: %s: %s\n", prog, file, strerror(errno)); + exit(1); + } + if (debug > 1) + printf("%s: doit: opened %s\n", prog, file); + + n = 0; + while (fgets(buf, sizeof(buf), f) != NULL) { + ++n; + + /* Skip comments */ + if (buf[0] == ';') + continue; + cp = strchr(buf, ';'); + if (cp) + *cp = '\0'; + cp = buf + strlen(buf) - 1; + if (cp >= buf && *cp == '\n') + *cp = '\0'; + cp = buf; + + /* Eat leading whitespace */ + while (isspace(*cp)) + ++cp; + + /* Skip blank lines */ + if (*cp == '\n' || *cp == '\0') + continue; + + /* Get name */ + cp2 = cp; + while (!isspace(*cp) && *cp != '\0') + ++cp; + *cp++ = '\0'; + + /* Find next keyword */ + while (isspace(*cp)) + ++cp; + if (strcasecmp(cp2, "directory") == 0) { + /* Terminate directory */ + cp2 = cp; + while (!isspace(*cp) && *cp != '\0') + ++cp; + *cp = '\0'; + if (chdir(cp2) < 0) { + ++errors; + fprintf(stderr, "%s: can't chdir %s: %s\n", + prog, cp2, strerror(errno)); + exit(1); + } + cwd = savestr(cp2); + continue; + } + if (strcasecmp(cp2, "primary") == 0) { + /* Extract domain, converting to lowercase */ + for (cp2 = name; !isspace(*cp) && *cp != '\0'; ++cp) + if (isupper(*cp)) + *cp2++ = tolower(*cp); + else + *cp2++ = *cp; + /* Insure trailing dot */ + if (cp2 > name && cp2[-1] != '.') + *cp2++ = '.'; + *cp2 = '\0'; + + /* Find file */ + while (isspace(*cp)) + ++cp; + + /* Terminate directory */ + cp2 = cp; + while (!isspace(*cp) && *cp != '\0') + ++cp; + *cp = '\0'; + + /* Process it! (zone is the same as the domain) */ + nsoaval = -1; + memset(soaval, 0, sizeof(soaval)); + process(cp2, name, name); + continue; + } + if (strcasecmp(cp2, "network") == 0) { + if (!parsenetwork(cp, &errstr)) { + ++errors; + fprintf(stderr, + "%s: %s:%d: bad network: %s\n", + prog, file, n, errstr); + } + continue; + } + if (strcasecmp(cp2, "include") == 0) { + /* Terminate include file */ + cp2 = cp; + while (!isspace(*cp) && *cp != '\0') + ++cp; + *cp = '\0'; + errors += doboot(cp2, 1); + continue; + } + /* Eat any other options */ + } + (void)fclose(f); + + return (errors != 0); +} + +int +doconf(register const char *file, register int mustexist) +{ + register int n, fd, cc, i, depth; + register char *cp, *cp2, *buf; + register char *name, *zonename, *filename, *typename; + register int namelen, zonenamelen, filenamelen, typenamelen; + char *errstr; + struct stat sbuf; + char zone[128], includefile[256]; + + errno = 0; + fd = open(file, O_RDONLY, 0); + if (fd < 0) { + /* Not an error if it doesn't exist */ + if (!mustexist && errno == ENOENT) { + if (debug > 1) + printf( + "%s: doconf: %s doesn't exist (ignoring)\n", + prog, file); + return (-1); + } + fprintf(stderr, "%s: %s: %s\n", prog, file, strerror(errno)); + exit(1); + } + if (debug > 1) + printf("%s: doconf: opened %s\n", prog, file); + + if (fstat(fd, &sbuf) < 0) { + fprintf(stderr, "%s: fstat(%s) %s\n", + prog, file, strerror(errno)); + exit(1); + } + buf = (char *)malloc(sbuf.st_size + 1); + if (buf == NULL) { + fprintf(stderr, "%s: malloc: %s\n", prog, strerror(errno)); + exit(1); + } + + /* Slurp entire config file */ + n = sbuf.st_size; + cp = buf; + do { + cc = read(fd, cp, n); + if (cc < 0) { + fprintf(stderr, "%s: read(%s) %s\n", + prog, file, strerror(errno)); + exit(1); + } + cp += cc; + n -= cc; + } while (cc != 0 && cc < n); + buf[cc] = '\0'; + +#define EATWHITESPACE \ + while (isspace(*cp)) { \ + if (*cp == '\n') \ + ++n; \ + ++cp; \ + } + +/* Handle both to-end-of-line and C style comments */ +#define EATCOMMENTS \ + { \ + int sawcomment; \ + do { \ + EATWHITESPACE \ + sawcomment = 0; \ + if (*cp == '#') { \ + sawcomment = 1; \ + ++cp; \ + while (*cp != '\n' && *cp != '\0') \ + ++cp; \ + } \ + else if (strncmp(cp, "//", 2) == 0) { \ + sawcomment = 1; \ + cp += 2; \ + while (*cp != '\n' && *cp != '\0') \ + ++cp; \ + } \ + else if (strncmp(cp, "/*", 2) == 0) { \ + sawcomment = 1; \ + for (cp += 2; *cp != '\0'; ++cp) { \ + if (*cp == '\n') \ + ++n; \ + else if (strncmp(cp, "*/", 2) == 0) { \ + cp += 2; \ + break; \ + } \ + } \ + } \ + } while (sawcomment); \ + } + +#define GETNAME(name, len) \ + { \ + (name) = cp; \ + (len) = 0; \ + while (!isspace(*cp) && *cp != ';' && *cp != '\0') { \ + ++(len); \ + ++cp; \ + } \ + } + +#define GETQUOTEDNAME(name, len) \ + { \ + if (*cp != '"') { \ + ++errors; \ + fprintf(stderr, "%s: %s:%d missing left quote\n", \ + prog, file, n); \ + } else \ + ++cp; \ + (name) = cp; \ + (len) = 0; \ + while (*cp != '"' && *cp != '\n' && *cp != '\0') { \ + ++(len); \ + ++cp; \ + } \ + if (*cp != '"') { \ + ++errors; \ + fprintf(stderr, "%s: %s:%d missing right quote\n", \ + prog, file, n); \ + } else \ + ++cp; \ + } + +/* Eat everything to the next semicolon, perhaps eating matching qbraces */ +#define EATSEMICOLON \ + { \ + register int depth = 0; \ + while (*cp != '\0') { \ + EATCOMMENTS \ + if (*cp == ';') { \ + ++cp; \ + if (depth == 0) \ + break; \ + continue; \ + } \ + if (*cp == '{') { \ + ++depth; \ + ++cp; \ + continue; \ + } \ + if (*cp == '}') { \ + --depth; \ + ++cp; \ + continue; \ + } \ + ++cp; \ + } \ + } + + n = 1; + zone[0] = '\0'; + cp = buf; + while (*cp != '\0') { + EATCOMMENTS + if (*cp == '\0') + break; + GETNAME(name, namelen) + if (namelen == 0) { + ++errors; + fprintf(stderr, "%s: %s:%d garbage char '%c' (1)\n", + prog, file, n, *cp); + ++cp; + continue; + } + EATCOMMENTS + if (strncasecmp(name, "options", namelen) == 0) { + EATCOMMENTS + if (*cp != '{') { + ++errors; + fprintf(stderr, + "%s: %s:%d missing left qbrace in options\n", + prog, file, n); + } else + ++cp; + EATCOMMENTS + while (*cp != '}' && *cp != '\0') { + EATCOMMENTS + GETNAME(name, namelen) + if (namelen == 0) { + ++errors; + fprintf(stderr, + "%s: %s:%d garbage char '%c' (2)\n", + prog, file, n, *cp); + ++cp; + break; + } + + /* If not the "directory" option, just eat it */ + if (strncasecmp(name, "directory", + namelen) == 0) { + EATCOMMENTS + GETQUOTEDNAME(cp2, i) + cp2[i] = '\0'; + if (chdir(cp2) < 0) { + ++errors; + fprintf(stderr, + "%s: %s:.%d can't chdir %s: %s\n", + prog, file, n, cp2, + strerror(errno)); + exit(1); + } + cwd = savestr(cp2); + } + EATSEMICOLON + EATCOMMENTS + } + ++cp; + EATCOMMENTS + if (*cp != ';') { + ++errors; + fprintf(stderr, + "%s: %s:%d missing options semi\n", + prog, file, n); + } else + ++cp; + continue; + } + if (strncasecmp(name, "zone", namelen) == 0) { + EATCOMMENTS + GETQUOTEDNAME(zonename, zonenamelen) + typename = NULL; + filename = NULL; + typenamelen = 0; + filenamelen = 0; + EATCOMMENTS + if (strncasecmp(cp, "in", 2) == 0) { + cp += 2; + EATWHITESPACE + } else if (strncasecmp(cp, "chaos", 5) == 0) { + cp += 5; + EATWHITESPACE + } + if (*cp != '{') { /* } */ + ++errors; + fprintf(stderr, + "%s: %s:%d missing left qbrace in zone\n", + prog, file, n); + continue; + } + depth = 0; + EATCOMMENTS + while (*cp != '\0') { + if (*cp == '{') { + ++cp; + ++depth; + } else if (*cp == '}') { + if (--depth <= 1) + break; + ++cp; + } + EATCOMMENTS + GETNAME(name, namelen) + if (namelen == 0) { + ++errors; + fprintf(stderr, + "%s: %s:%d garbage char '%c' (3)\n", + prog, file, n, *cp); + ++cp; + break; + } + if (strncasecmp(name, "type", + namelen) == 0) { + EATCOMMENTS + GETNAME(typename, typenamelen) + if (namelen == 0) { + ++errors; + fprintf(stderr, + "%s: %s:%d garbage char '%c' (4)\n", + prog, file, n, *cp); + ++cp; + break; + } + } else if (strncasecmp(name, "file", + namelen) == 0) { + EATCOMMENTS + GETQUOTEDNAME(filename, filenamelen) + } + /* Just ignore keywords we don't understand */ + EATSEMICOLON + EATCOMMENTS + } + /* { */ + if (*cp != '}') { + ++errors; + fprintf(stderr, + "%s: %s:%d missing zone right qbrace\n", + prog, file, n); + } else + ++cp; + if (*cp != ';') { + ++errors; + fprintf(stderr, + "%s: %s:%d missing zone semi\n", + prog, file, n); + } else + ++cp; + EATCOMMENTS + /* If we got something interesting, process it */ + if (typenamelen == 0) { + ++errors; + fprintf(stderr, "%s: missing zone type!\n", + prog); + continue; + } + if (strncasecmp(typename, "master", typenamelen) == 0) { + if (filenamelen == 0) { + ++errors; + fprintf(stderr, + "%s: missing zone filename!\n", + prog); + continue; + } + strncpy(zone, zonename, zonenamelen); + zone[zonenamelen] = '\0'; + for (cp2 = zone; *cp2 != '\0'; ++cp2) + if (isupper(*cp2)) + *cp2 = tolower(*cp2); + /* Insure trailing dot */ + if (cp2 > zone && cp2[-1] != '.') { + *cp2++ = '.'; + *cp2 = '\0'; + } + filename[filenamelen] = '\0'; + nsoaval = -1; + memset(soaval, 0, sizeof(soaval)); + process(filename, zone, zone); + } + continue; + } + if (strncasecmp(name, "nslint", namelen) == 0) { + EATCOMMENTS + if (*cp != '{') { + ++errors; + fprintf(stderr, + "%s: %s:%d missing left qbrace in nslint\n", + prog, file, n); + } else + ++cp; + ++cp; + EATCOMMENTS + while (*cp != '}' && *cp != '\0') { + EATCOMMENTS + GETNAME(name, namelen) + if (strncasecmp(name, "network", + namelen) == 0) { + EATCOMMENTS + GETQUOTEDNAME(cp2, i) + + + cp2[i] = '\0'; + if (!parsenetwork(cp2, &errstr)) { + ++errors; + fprintf(stderr, + "%s: %s:%d: bad network: %s\n", + prog, file, n, errstr); + } + } else { + ++errors; + fprintf(stderr, + "%s: unknown nslint \"%.*s\"\n", + prog, namelen, name); + } + EATSEMICOLON + EATCOMMENTS + } + ++cp; + EATCOMMENTS + if (*cp != ';') { + ++errors; + fprintf(stderr, "missing options semi\n"); + } else + ++cp; + continue; + } + if (strncasecmp(name, "include", namelen) == 0) { + EATCOMMENTS + GETQUOTEDNAME(filename, filenamelen) + strncpy(includefile, filename, filenamelen); + includefile[filenamelen] = '\0'; + errors += doconf(includefile, 1); + EATSEMICOLON + continue; + } + + /* Skip over statements we don't understand */ + EATSEMICOLON + } + + free(buf); + close(fd); + return (errors != 0); +} + +/* Return true when done */ +int +parsesoa(register const char *cp, register char **errstrp) +{ + register char ch, *garbage; + static char errstr[132]; + + /* Eat leading whitespace */ + while (isspace(*cp)) + ++cp; + + /* Find opening paren */ + if (nsoaval < 0) { + cp = strchr(cp, '('); + if (cp == NULL) + return (0); + ++cp; + while (isspace(*cp)) + ++cp; + nsoaval = 0; + } + + /* Grab any numbers we find */ + garbage = "leading garbage"; + while (isdigit(*cp) && nsoaval < NSOAVAL) { + soaval[nsoaval] = atoi(cp); + do { + ++cp; + } while (isdigit(*cp)); + if (nsoaval == SOA_SERIAL && *cp == '.' && isdigit(cp[1])) { + do { + ++cp; + } while (isdigit(*cp)); + } else { + ch = *cp; + if (isupper(ch)) + ch = tolower(ch); + switch (ch) { + + case 'w': + soaval[nsoaval] *= 7; + /* fall through */ + + case 'd': + soaval[nsoaval] *= 24; + /* fall through */ + + case 'h': + soaval[nsoaval] *= 60; + /* fall through */ + + case 'm': + soaval[nsoaval] *= 60; + /* fall through */ + + case 's': + ++cp; + break; + + default: + ; /* none */ + } + } + while (isspace(*cp)) + ++cp; + garbage = "trailing garbage"; + ++nsoaval; + } + + /* If we're done, do some sanity checks */ + if (nsoaval >= NSOAVAL && *cp == ')') { + ++cp; + if (*cp != '\0') + *errstrp = garbage; + else if (soaval[SOA_EXPIRE] < + soaval[SOA_REFRESH] + 10 * soaval[SOA_RETRY]) { + (void)sprintf(errstr, + "expire less than refresh + 10 * retry (%u < %u + 10 * %u)", + soaval[SOA_EXPIRE], + soaval[SOA_REFRESH], + soaval[SOA_RETRY]); + *errstrp = errstr; + } else if (soaval[SOA_REFRESH] < 2 * soaval[SOA_RETRY]) { + (void)sprintf(errstr, + "refresh less than 2 * retry (%u < 2 * %u)", + soaval[SOA_REFRESH], + soaval[SOA_RETRY]); + *errstrp = errstr; + } + return (1); + } + + if (*cp != '\0') { + *errstrp = garbage; + return (1); + } + + return (0); +} + +void +process(register const char *file, register const char *domain, + register const char *zone) +{ + register FILE *f; + register char ch, *cp, *cp2, *cp3, *rtype; + register const char *ccp; + register int n, sawsoa, flags, i; + register u_int ttl; + register u_int32_t addr; + u_int32_t net, mask; + int smtp; + char buf[1024], name[128], lastname[128], odomain[128]; + char *errstr; + char *dotfmt = "%s: %s/%s:%d \"%s\" target missing trailing dot: %s\n"; + + f = fopen(file, "r"); + if (f == NULL) { + fprintf(stderr, "%s: %s/%s: %s\n", + prog, cwd, file, strerror(errno)); + ++errors; + return; + } + if (debug > 1) + printf("%s: process: opened %s/%s\n", prog, cwd, file); + + /* Are we doing an in-addr.arpa domain? */ + n = 0; + net = 0; + mask = 0; + ccp = domain + strlen(domain) - sizeof(inaddr) + 1; + if (ccp >= domain && strcasecmp(ccp, inaddr) == 0 && + !parseinaddr(domain, &net, &mask)) { + ++errors; + fprintf(stderr, "%s: %s/%s:%d bad in-addr.arpa domain\n", + prog, cwd, file, n); + return; + } + + lastname[0] = '\0'; + sawsoa = 0; + while (fgets(buf, sizeof(buf), f) != NULL) { + ++n; + cp = buf; + while (*cp != '\0') { + /* Handle quoted strings (but don't report errors) */ + if (*cp == '"') { + ++cp; + while (*cp != '"' && *cp != '\n' && *cp != '\0') + ++cp; + continue; + } + if (*cp == '\n' || *cp == ';') + break; + ++cp; + } + *cp-- = '\0'; + + /* Nuke trailing white space */ + while (cp >= buf && isspace(*cp)) + *cp-- = '\0'; + + cp = buf; + if (*cp == '\0') + continue; + + /* Handle multi-line soa records */ + if (sawsoa) { + errstr = NULL; + if (parsesoa(cp, &errstr)) + sawsoa = 0; + if (errstr != NULL) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d bad \"soa\" record (%s)\n", + prog, cwd, file, n, errstr); + } + continue; + } + if (debug > 3) + printf(">%s<\n", cp); + + /* Look for name */ + if (isspace(*cp)) { + /* Same name as last record */ + if (lastname[0] == '\0') { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d no default name\n", + prog, cwd, file, n); + continue; + } + (void)strcpy(name, lastname); + } else { + /* Extract name, converting to lowercase */ + for (cp2 = name; !isspace(*cp) && *cp != '\0'; ++cp) + if (isupper(*cp)) + *cp2++ = tolower(*cp); + else + *cp2++ = *cp; + *cp2 = '\0'; + + /* Check for domain shorthand */ + if (name[0] == '@' && name[1] == '\0') + (void)strcpy(name, domain); + } + + /* Find next token */ + while (isspace(*cp)) + ++cp; + + /* Handle includes (gag) */ + if (name[0] == '$' && strcasecmp(name, "$include") == 0) { + /* Extract filename */ + cp2 = name; + while (!isspace(*cp) && *cp != '\0') + *cp2++ = *cp++; + *cp2 = '\0'; + + /* Look for optional domain */ + while (isspace(*cp)) + ++cp; + if (*cp == '\0') + process(name, domain, zone); + else { + cp2 = cp; + /* Convert optional domain to lowercase */ + for (; !isspace(*cp) && *cp != '\0'; ++cp) + if (isupper(*cp)) + *cp = tolower(*cp); + *cp = '\0'; + process(name, cp2, cp2); + } + continue; + } + + /* Handle $origin */ + if (name[0] == '$' && strcasecmp(name, "$origin") == 0) { + /* Extract domain, converting to lowercase */ + for (cp2 = odomain; !isspace(*cp) && *cp != '\0'; ++cp) + if (isupper(*cp)) + *cp2++ = tolower(*cp); + else + *cp2++ = *cp; + *cp2 = '\0'; + domain = odomain; + lastname[0] = '\0'; + + /* Are we doing an in-addr.arpa domain? */ + net = 0; + mask = 0; + ccp = domain + strlen(domain) - (sizeof(inaddr) - 1); + if (ccp >= domain && strcasecmp(ccp, inaddr) == 0 && + !parseinaddr(domain, &net, &mask)) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d bad in-addr.arpa domain\n", + prog, cwd, file, n); + return; + } + continue; + } + + /* Handle ttl */ + if (name[0] == '$' && strcasecmp(name, "$ttl") == 0) { + cp2 = cp; + while (isdigit(*cp)) + ++cp; + ch = *cp; + if (isupper(ch)) + ch = tolower(ch); + if (strchr("wdhms", ch) != NULL) + ++cp; + while (isspace(*cp)) + ++cp; + if (*cp != '\0') { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d bad $ttl \"%s\"\n", + prog, cwd, file, n, cp2); + } + (void)strcpy(name, lastname); + continue; + } + + /* Parse ttl or use default */ + if (isdigit(*cp)) { + ttl = atoi(cp); + do { + ++cp; + } while (isdigit(*cp)); + + ch = *cp; + if (isupper(ch)) + ch = tolower(ch); + switch (ch) { + + case 'w': + ttl *= 7; + /* fall through */ + + case 'd': + ttl *= 24; + /* fall through */ + + case 'h': + ttl *= 60; + /* fall through */ + + case 'm': + ttl *= 60; + /* fall through */ + + case 's': + ++cp; + break; + + default: + ; /* none */ + } + + + if (!isspace(*cp)) { + ++errors; + fprintf(stderr, "%s: %s/%s:%d bad ttl\n", + prog, cwd, file, n); + continue; + } + + /* Find next token */ + ++cp; + while (isspace(*cp)) + ++cp; + } else + ttl = soaval[SOA_MINIMUM]; + + /* Eat optional "in" */ + if ((cp[0] == 'i' || cp[0] == 'I') && + (cp[1] == 'n' || cp[1] == 'N') && isspace(cp[2])) { + /* Find next token */ + cp += 3; + while (isspace(*cp)) + ++cp; + } else if ((cp[0] == 'c' || cp[0] == 'C') && + isspace(cp[5]) && strncasecmp(cp, "chaos", 5) == 0) { + /* Find next token */ + cp += 5; + while (isspace(*cp)) + ++cp; + } + + /* Find end of record type, converting to lowercase */ + rtype = cp; + for (rtype = cp; !isspace(*cp) && *cp != '\0'; ++cp) + if (isupper(*cp)) + *cp = tolower(*cp); + *cp++ = '\0'; + + /* Find "the rest" */ + while (isspace(*cp)) + ++cp; + + /* Check for non-ptr names with dots but no trailing dot */ + if (!isdigit(*name) && + checkdots(name) && strcmp(domain, ".") != 0) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"%s\" name missing trailing dot: %s\n", + prog, cwd, file, n, rtype, name); + } + + /* Check for FQDNs outside the zone */ + cp2 = name + strlen(name) - 1; + if (cp2 >= name && *cp2 == '.' && strchr(name, '.') != NULL) { + cp2 = name + strlen(name) - strlen(zone); + if (cp2 >= name && strcasecmp(cp2, zone) != 0) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"%s\" outside zone %s\n", + prog, cwd, file, n, name, zone); + } + } + +#define CHECK4(p, a, b, c, d) \ + (p[0] == (a) && p[1] == (b) && p[2] == (c) && p[3] == (d) && p[4] == '\0') +#define CHECK3(p, a, b, c) \ + (p[0] == (a) && p[1] == (b) && p[2] == (c) && p[3] == '\0') +#define CHECK2(p, a, b) \ + (p[0] == (a) && p[1] == (b) && p[2] == '\0') +#define CHECKDOT(p) \ + (p[0] == '.' && p[1] == '\0') + + if (rtype[0] == 'a' && rtype[1] == '\0') { + /* Handle "a" record */ + add_domain(name, domain); + addr = htonl(inet_addr(cp)); + if ((int)addr == -1) { + ++errors; + cp2 = cp + strlen(cp) - 1; + if (cp2 >= cp && *cp2 == '\n') + *cp2 = '\0'; + fprintf(stderr, + "%s: %s/%s:%d bad \"a\" record ip addr \"%s\"\n", + prog, cwd, file, n, cp); + continue; + } + errors += updateitem(name, addr, REC_A, ttl, 0); + } else if (CHECK4(rtype, 'a', 'a', 'a', 'a')) { + /* Just eat for now */ + continue; + } else if (CHECK3(rtype, 'p', 't', 'r')) { + /* Handle "ptr" record */ + add_domain(name, domain); + if (strcmp(cp, "@") == 0) + (void)strcpy(cp, zone); + if (checkdots(cp)) { + ++errors; + fprintf(stderr, dotfmt, + prog, cwd, file, n, rtype, cp); + } + add_domain(cp, domain); + errstr = NULL; + addr = parseptr(name, net, mask, &errstr); + if (errstr != NULL) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d bad \"ptr\" record (%s) ip addr \"%s\"\n", + prog, cwd, file, n, errstr, name); + continue; + } + errors += updateitem(cp, addr, REC_PTR, 0, 0); + } else if (CHECK3(rtype, 's', 'o', 'a')) { + /* Handle "soa" record */ + if (!CHECKDOT(name)) { + add_domain(name, domain); + errors += updateitem(name, 0, REC_SOA, 0, 0); + } + errstr = NULL; + if (!parsesoa(cp, &errstr)) + ++sawsoa; + if (errstr != NULL) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d bad \"soa\" record (%s)\n", + prog, cwd, file, n, errstr); + continue; + } + } else if (CHECK3(rtype, 'w', 'k', 's')) { + /* Handle "wks" record */ + addr = htonl(inet_addr(cp)); + if ((int)addr == -1) { + ++errors; + cp2 = cp; + while (!isspace(*cp2) && *cp2 != '\0') + ++cp2; + *cp2 = '\0'; + fprintf(stderr, + "%s: %s/%s:%d bad \"wks\" record ip addr \"%s\"\n", + prog, cwd, file, n, cp); + continue; + } + /* Step over ip address */ + while (*cp == '.' || isdigit(*cp)) + ++cp; + while (isspace(*cp)) + *cp++ = '\0'; + /* Make sure services are legit */ + errstr = NULL; + n += checkwks(f, cp, &smtp, &errstr); + if (errstr != NULL) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d bad \"wks\" record (%s)\n", + prog, cwd, file, n, errstr); + continue; + } + add_domain(name, domain); + errors += updateitem(name, addr, REC_WKS, + 0, smtp ? FLG_SMTPWKS : 0); + /* XXX check to see if ip address records exists? */ + } else if (rtype[0] == 'h' && strcmp(rtype, "hinfo") == 0) { + /* Handle "hinfo" record */ + add_domain(name, domain); + errors += updateitem(name, 0, REC_HINFO, 0, 0); + cp2 = cp; + cp = parsequoted(cp); + if (cp == NULL) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"hinfo\" missing quote: %s\n", + prog, cwd, file, n, cp2); + continue; + } + if (!isspace(*cp)) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"hinfo\" missing white space: %s\n", + prog, cwd, file, n, cp2); + continue; + } + ++cp; + while (isspace(*cp)) + ++cp; + if (*cp == '\0') { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"hinfo\" missing keyword: %s\n", + prog, cwd, file, n, cp2); + continue; + } + cp = parsequoted(cp); + if (cp == NULL) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"hinfo\" missing quote: %s\n", + prog, cwd, file, n, cp2); + continue; + } + if (*cp != '\0') { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"hinfo\" garbage after keywords: %s\n", + prog, cwd, file, n, cp2); + continue; + } + } else if (CHECK2(rtype, 'm', 'x')) { + /* Handle "mx" record */ + add_domain(name, domain); + errors += updateitem(name, 0, REC_MX, ttl, 0); + + /* Look for priority */ + if (!isdigit(*cp)) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d bad \"mx\" priority: %s\n", + prog, cwd, file, n, cp); + } + + /* Skip over priority */ + ++cp; + while (isdigit(*cp)) + ++cp; + while (isspace(*cp)) + ++cp; + if (*cp == '\0') { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d missing \"mx\" hostname\n", + prog, cwd, file, n); + } + if (strcmp(cp, "@") == 0) + (void)strcpy(cp, zone); + if (checkdots(cp)) { + ++errors; + fprintf(stderr, dotfmt, + prog, cwd, file, n, rtype, cp); + } + + /* Check to see if mx host exists */ + add_domain(cp, domain); + flags = FLG_MXREF; + if (*name == *cp && strcmp(name, cp) == 0) + flags |= FLG_SELFMX; + errors += updateitem(cp, 0, REC_REF, 0, flags); + } else if (rtype[0] == 'c' && strcmp(rtype, "cname") == 0) { + /* Handle "cname" record */ + add_domain(name, domain); + errors += updateitem(name, 0, REC_CNAME, 0, 0); + if (checkdots(cp)) { + ++errors; + fprintf(stderr, dotfmt, + prog, cwd, file, n, rtype, cp); + } + + /* Make sure cname points somewhere */ + if (strcmp(cp, "@") == 0) + (void)strcpy(cp, zone); + add_domain(cp, domain); + errors += updateitem(cp, 0, REC_REF, 0, 0); + } else if (CHECK3(rtype, 's', 'r', 'v')) { + /* Handle "srv" record */ + add_domain(name, domain); + errors += updateitem(name, 0, REC_SRV, 0, 0); + cp2 = cp; + + /* Skip over three values */ + for (i = 0; i < 3; ++i) { + if (!isdigit(*cp)) { + ++errors; + fprintf(stderr, "%s: %s/%s:%d" + " bad \"srv\" value: %s\n", + prog, cwd, file, n, cp); + } + + /* Skip over value */ + ++cp; + while (isdigit(*cp)) + ++cp; + while (isspace(*cp)) + ++cp; + } + + /* Check to see if mx host exists */ + add_domain(cp, domain); + errors += updateitem(cp, 0, REC_REF, 0, 0); + } else if (CHECK3(rtype, 't', 'x', 't')) { + /* Handle "txt" record */ + add_domain(name, domain); + errors += updateitem(name, 0, REC_TXT, 0, 0); + cp2 = cp; + cp = parsequoted(cp); + if (cp == NULL) { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"txt\" missing quote: %s\n", + prog, cwd, file, n, cp2); + continue; + } + while (isspace(*cp)) + ++cp; + if (*cp != '\0') { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"txt\" garbage after text: %s\n", + prog, cwd, file, n, cp2); + continue; + } + } else if (CHECK2(rtype, 'n', 's')) { + /* Handle "ns" record */ + errors += updateitem(zone, 0, REC_NS, 0, 0); + if (strcmp(cp, "@") == 0) + (void)strcpy(cp, zone); + if (checkdots(cp)) { + ++errors; + fprintf(stderr, dotfmt, + prog, cwd, file, n, rtype, cp); + } + add_domain(cp, domain); + errors += updateitem(cp, 0, REC_REF, 0, 0); + } else if (CHECK2(rtype, 'r', 'p')) { + /* Handle "rp" record */ + add_domain(name, domain); + errors += updateitem(name, 0, REC_RP, 0, 0); + cp2 = cp; + + /* Step over mailbox name */ + /* XXX could add_domain() and check further */ + while (!isspace(*cp) && *cp != '\0') + ++cp; + if (*cp == '\0') { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"rp\" missing text name: %s\n", + prog, cwd, file, n, cp2); + continue; + } + ++cp; + cp3 = cp; + + /* Step over text name */ + while (!isspace(*cp) && *cp != '\0') + ++cp; + + if (*cp != '\0') { + ++errors; + fprintf(stderr, + "%s: %s/%s:%d \"rp\" garbage after text name: %s\n", + prog, cwd, file, n, cp2); + continue; + } + + /* Make sure text name points somewhere (if not ".") */ + if (!CHECKDOT(cp3)) { + add_domain(cp3, domain); + errors += updateitem(cp3, 0, REC_REF, 0, 0); + } + } else if (rtype[0] == 'a' && strcmp(rtype, "allowdupa") == 0) { + /* Handle "allow duplicate a" record */ + add_domain(name, domain); + addr = htonl(inet_addr(cp)); + if ((int)addr == -1) { + ++errors; + cp2 = cp + strlen(cp) - 1; + if (cp2 >= cp && *cp2 == '\n') + *cp2 = '\0'; + fprintf(stderr, + "%s: %s/%s:%d bad \"allowdupa\" record ip addr \"%s\"\n", + prog, cwd, file, n, cp); + continue; + } + errors += updateitem(name, addr, 0, 0, FLG_ALLOWDUPA); + } else { + /* Unknown record type */ + ++errors; + fprintf(stderr, + "%s: %s/%s:%d unknown record type \"%s\"\n", + prog, cwd, file, n, rtype); + add_domain(name, domain); + errors += updateitem(name, 0, REC_UNKNOWN, 0, 0); + } + (void)strcpy(lastname, name); + } + (void)fclose(f); + return; +} + +/* Records we use to detect duplicates */ +static struct duprec { + int record; + char *name; +} duprec[] = { + { REC_A, "a" }, + { REC_HINFO, "hinfo" }, + { 0, NULL }, +}; + +void +checkdups(register struct item *ip, register int records) +{ + register struct duprec *dp; + + records &= (ip->records & MASK_TEST_DUP); + if (records == 0) + return; + for (dp = duprec; dp->name != NULL; ++dp) + if ((records & dp->record) != 0) { + ++errors; + fprintf(stderr, "%s: multiple \"%s\" records for %s\n", + prog, dp->name, ip->host); + records &= ~dp->record; + } + if (records != 0) + fprintf(stderr, "%s: checkdups: records not zero (%d)\n", + prog, records); +} + +int +updateitem(register const char *host, register u_int32_t addr, + register int records, register u_int ttl, register int flags) +{ + register const char *ccp; + register int n, errs; + register u_int i; + register struct item *ip; + int foundsome; + + n = 0; + foundsome = 0; + errs = 0; + ITEMHASH(host, i, ccp); + ip = &items[i & (ITEMSIZE - 1)]; + while (n < ITEMSIZE && ip->host) { + if ((addr == 0 || addr == ip->addr || ip->addr == 0) && + *host == *ip->host && strcmp(host, ip->host) == 0) { + ++foundsome; + if (ip->addr == 0) + ip->addr = addr; + if ((records & MASK_TEST_DUP) != 0) + checkdups(ip, records); + ip->records |= records; + /* Only check differing ttl's for A and MX records */ + if (ip->ttl == 0) + ip->ttl = ttl; + else if (ttl != 0 && ip->ttl != ttl) { + fprintf(stderr, + "%s: differing ttls for %s (%u != %u)\n", + prog, ip->host, ttl, ip->ttl); + ++errs; + } + ip->flags |= flags; + /* Not done if we wildcard matched the name */ + if (addr) + return (errs); + } + ++n; + ++ip; + if (ip >= &items[ITEMSIZE]) + ip = items; + } + + if (n >= ITEMSIZE) { + fprintf(stderr, "%s: out of item slots (max %d)\n", + prog, ITEMSIZE); + exit(1); + } + + /* Done if we were wildcarding the name (and found entries for it) */ + if (addr == 0 && foundsome) + return (errs); + + /* Didn't find it, make new entry */ + ++itemcnt; + if (ip->host) { + fprintf(stderr, "%s: reusing bucket!\n", prog); + exit(1); + } + ip->addr = addr; + ip->host = savestr(host); + if ((records & MASK_TEST_DUP) != 0) + checkdups(ip, records); + ip->records |= records; + if (ttl != 0) + ip->ttl = ttl; + ip->flags |= flags; + return (errs); +} + +static const char *microlist[] = { + "_tcp", + "_udp", + "_msdcs", + "_sites", + NULL +}; + +int +rfc1034host(register const char *host, register int recs) +{ + register const char *cp, **p; + register int underok; + + underok = 0; + for (p = microlist; *p != NULL ;++p) + if ((cp = strstr(host, *p)) != NULL && + cp > host && + cp[-1] == '.' && + cp[strlen(*p)] == '.') { + ++underok; + break; + } + + cp = host; + if (!(isalpha(*cp) || isdigit(*cp) || (*cp == '_' && underok))) { + fprintf(stderr, + "%s: illegal hostname \"%s\" (starts with non-alpha/numeric)\n", + prog, host); + return (1); + } + for (++cp; *cp != '.' && *cp != '\0'; ++cp) + if (!(isalpha(*cp) || isdigit(*cp) || *cp == '-' || + (*cp == '/' && (recs & REC_SOA) != 0))) { + fprintf(stderr, + "%s: illegal hostname \"%s\" ('%c' illegal character)\n", + prog, host, *cp); + return (1); + } + if (--cp >= host && *cp == '-') { + fprintf(stderr, "%s: illegal hostname \"%s\" (ends with '-')\n", + prog, host); + return (1); + } + return (0); +} + +int +nslint(void) +{ + register int n, records, flags; + register struct item *ip, *lastaip, **ipp, **itemlist; + register u_int32_t addr, lastaddr, mask; + + itemlist = (struct item **)calloc(itemcnt, sizeof(*ipp)); + if (itemlist == NULL) { + fprintf(stderr, "%s: nslint: calloc: %s\n", + prog, strerror(errno)); + exit(1); + } + ipp = itemlist; + for (n = 0, ip = items; n < ITEMSIZE; ++n, ++ip) { + if (ip->host == NULL) + continue; + + /* Save entries with addresses for later check */ + if (ip->addr != 0) + *ipp++ = ip; + + if (debug > 1) { + if (debug > 2) + printf("%d\t", n); + printf("%s\t%s\t0x%x\t0x%x\n", + ip->host, intoa(ip->addr), ip->records, ip->flags); + } + + /* Check for illegal hostnames (rfc1034) */ + if (rfc1034host(ip->host, ip->records)) + ++errors; + + /* Check for missing ptr records (ok if also an ns record) */ + records = ip->records & MASK_CHECK_REC; + if ((ip->records & MASK_TEST_REC) != 0) + records |= REC_OTHER; + switch (records) { + + case REC_A | REC_OTHER | REC_PTR | REC_REF: + case REC_A | REC_OTHER | REC_PTR: + case REC_A | REC_PTR | REC_REF: + case REC_A | REC_PTR: + case REC_CNAME: + /* These are O.K. */ + break; + + case REC_CNAME | REC_REF: + ++errors; + fprintf(stderr, "%s: \"cname\" referenced by other" + " \"cname\" or \"mx\": %s\n", prog, ip->host); + break; + + case REC_OTHER | REC_REF: + case REC_OTHER: + /* + * This is only an error if there is an address + * associated with the hostname; this means + * there was a wks entry with bogus address. + * Otherwise, we have an mx or hinfo. + */ + if (ip->addr != 0) { + ++errors; + fprintf(stderr, + "%s: \"wks\" without \"a\" and \"ptr\": %s -> %s\n", + prog, ip->host, intoa(ip->addr)); + } + break; + + case REC_REF: + ++errors; + fprintf(stderr, + "%s: name referenced without other records: %s\n", + prog, ip->host); + break; + + case REC_A | REC_OTHER | REC_REF: + case REC_A | REC_OTHER: + case REC_A | REC_REF: + case REC_A: + ++errors; + fprintf(stderr, "%s: missing \"ptr\": %s -> %s\n", + prog, ip->host, intoa(ip->addr)); + break; + + case REC_OTHER | REC_PTR | REC_REF: + case REC_OTHER | REC_PTR: + case REC_PTR | REC_REF: + case REC_PTR: + ++errors; + fprintf(stderr, "%s: missing \"a\": %s -> %s\n", + prog, ip->host, intoa(ip->addr)); + break; + + case REC_A | REC_CNAME | REC_OTHER | REC_PTR | REC_REF: + case REC_A | REC_CNAME | REC_OTHER | REC_PTR: + case REC_A | REC_CNAME | REC_OTHER | REC_REF: + case REC_A | REC_CNAME | REC_OTHER: + case REC_A | REC_CNAME | REC_PTR | REC_REF: + case REC_A | REC_CNAME | REC_PTR: + case REC_A | REC_CNAME | REC_REF: + case REC_A | REC_CNAME: + case REC_CNAME | REC_OTHER | REC_PTR | REC_REF: + case REC_CNAME | REC_OTHER | REC_PTR: + case REC_CNAME | REC_OTHER | REC_REF: + case REC_CNAME | REC_OTHER: + case REC_CNAME | REC_PTR | REC_REF: + case REC_CNAME | REC_PTR: + ++errors; + fprintf(stderr, "%s: \"cname\" %s has other records\n", + prog, ip->host); + break; + + case 0: + /* Second level test */ + if ((ip->records & ~(REC_NS | REC_TXT)) == 0) + break; + /* Fall through... */ + + default: + ++errors; + fprintf(stderr, + "%s: records == 0x%x: can't happen (%s 0x%x)\n", + prog, records, ip->host, ip->records); + break; + } + + /* Check for smtp problems */ + flags = ip->flags & MASK_TEST_SMTP; + + if ((flags & FLG_SELFMX) != 0 && (ip->records & REC_A) == 0) { + ++errors; + fprintf(stderr, + "%s: self \"mx\" for %s missing \"a\" record\n", + prog, ip->host); + } + + switch (flags) { + + case 0: + case FLG_SELFMX | FLG_SMTPWKS: + /* These are O.K. */ + break; + + case FLG_SELFMX: + if ((ip->records & REC_WKS) != 0) { + ++errors; + fprintf(stderr, + "%s: smtp/tcp missing from \"wks\": %s\n", + prog, ip->host); + } + break; + + case FLG_SMTPWKS: + ++errors; + fprintf(stderr, + "%s: saw smtp/tcp without self \"mx\": %s\n", + prog, ip->host); + break; + + default: + ++errors; + fprintf(stderr, + "%s: flags == 0x%x: can't happen (%s)\n", + prog, flags, ip->host); + } + + /* Check for chained MX records */ + if ((ip->flags & (FLG_SELFMX | FLG_MXREF)) == FLG_MXREF && + (ip->records & REC_MX) != 0) { + ++errors; + fprintf(stderr, "%s: \"mx\" referenced by other" + " \"mx\" record: %s\n", prog, ip->host); + } + } + + /* Check for doubly booked addresses */ + n = ipp - itemlist; + qsort(itemlist, n, sizeof(itemlist[0]), cmpaddr); + lastaddr = 0; + ip = NULL; + for (ipp = itemlist; n > 0; ++ipp, --n) { + addr = (*ipp)->addr; + if (lastaddr == addr && + ((*ipp)->flags & FLG_ALLOWDUPA) == 0 && + (ip->flags & FLG_ALLOWDUPA) == 0) { + ++errors; + fprintf(stderr, "%s: %s in use by %s and %s\n", + prog, intoa(addr), (*ipp)->host, ip->host); + } + lastaddr = addr; + ip = *ipp; + } + + /* Check for hosts with multiple addresses on the same subnet */ + n = ipp - itemlist; + qsort(itemlist, n, sizeof(itemlist[0]), cmphost); + if (netlistcnt > 0) { + n = ipp - itemlist; + lastaip = NULL; + for (ipp = itemlist; n > 0; ++ipp, --n) { + ip = *ipp; + if ((ip->records & REC_A) == 0 || + (ip->flags & FLG_ALLOWDUPA) != 0) + continue; + if (lastaip != NULL && + strcasecmp(ip->host, lastaip->host) == 0) { + mask = findmask(ip->addr); + if (mask == 0) { + ++errors; + fprintf(stderr, + "%s: can't find mask for %s (%s)\n", + prog, ip->host, intoa(ip->addr)); + } else if ((lastaip->addr & mask) == + (ip->addr & mask) ) { + ++errors; + fprintf(stderr, + "%s: multiple \"a\" records for %s on subnet %s", + prog, ip->host, + intoa(ip->addr & mask)); + fprintf(stderr, "\n\t(%s", + intoa(lastaip->addr)); + fprintf(stderr, " and %s)\n", + intoa(ip->addr)); + } + } + lastaip = ip; + } + } + + if (debug) + printf("%s: %d/%d items used, %d error%s\n", prog, itemcnt, + ITEMSIZE, errors, errors == 1 ? "" : "s"); + return (errors != 0); +} + +/* Similar to inet_ntoa() */ +char * +intoa(u_int32_t addr) +{ + register char *cp; + register u_int byte; + register int n; + static char buf[sizeof(".xxx.xxx.xxx.xxx")]; + + cp = &buf[sizeof buf]; + *--cp = '\0'; + + n = 4; + do { + byte = addr & 0xff; + *--cp = byte % 10 + '0'; + byte /= 10; + if (byte > 0) { + *--cp = byte % 10 + '0'; + byte /= 10; + if (byte > 0) + *--cp = byte + '0'; + } + *--cp = '.'; + addr >>= 8; + } while (--n > 0); + + return cp + 1; +} + +int +parseinaddr(register const char *cp, register u_int32_t *netp, + register u_int32_t *maskp) +{ + register int i, bits; + register u_int32_t o, net, mask; + + if (!isdigit(*cp)) + return (0); + net = 0; + mask = 0xff000000; + bits = 0; + o = 0; + do { + o = o * 10 + (*cp++ - '0'); + } while (isdigit(*cp)); + net = o << 24; + + /* Check for classless delegation mask width */ + if (*cp == '/') { + ++cp; + o = 0; + do { + o = o * 10 + (*cp++ - '0'); + } while (isdigit(*cp)); + bits = o; + if (bits <= 0 || bits > 32) + return (0); + } + + if (*cp == '.' && isdigit(cp[1])) { + ++cp; + o = 0; + do { + o = o * 10 + (*cp++ - '0'); + } while (isdigit(*cp)); + net = (net >> 8) | (o << 24); + mask = 0xffff0000; + if (*cp == '.' && isdigit(cp[1])) { + ++cp; + o = 0; + do { + o = o * 10 + (*cp++ - '0'); + } while (isdigit(*cp)); + net = (net >> 8) | (o << 24); + mask = 0xffffff00; + if (*cp == '.' && isdigit(cp[1])) { + ++cp; + o = 0; + do { + o = o * 10 + (*cp++ - '0'); + } while (isdigit(*cp)); + net = (net >> 8) | (o << 24); + mask = 0xffffffff; + } + } + } + if (strcasecmp(cp, inaddr) != 0) + return (0); + + /* Classless delegation */ + /* XXX check that calculated mask isn't smaller than octet mask? */ + if (bits != 0) + for (mask = 0, i = 31; bits > 0; --i, --bits) + mask |= (1 << i); + + *netp = net; + *maskp = mask; + return (1); +} + +u_int32_t +parseptr(register const char *cp, u_int32_t net, u_int32_t mask, + register char **errstrp) +{ + register u_int32_t o, addr; + register int shift; + + addr = 0; + shift = 0; + while (isdigit(*cp) && shift < 32) { + o = 0; + do { + o = o * 10 + (*cp++ - '0'); + } while (isdigit(*cp)); + addr |= o << shift; + shift += 8; + if (*cp != '.') { + if (*cp == '\0') + break; + *errstrp = "missing dot"; + return (0); + } + ++cp; + } + + if (shift > 32) { + *errstrp = "more than 4 octets"; + return (0); + } + + if (shift == 32 && strcasecmp(cp, inaddr + 1) == 0) + return (addr); + +#ifdef notdef + if (*cp != '\0') { + *errstrp = "trailing junk"; + return (0); + } +#endif +#ifdef notdef + if ((~mask & net) != 0) { + *errstrp = "too many octets for net"; + return (0); + } +#endif + return (net | addr); +} + +int +checkwks(register FILE *f, register char *proto, register int *smtpp, + register char **errstrp) +{ + register int n, sawparen; + register char *cp, *serv, **p; + static char errstr[132]; + char buf[1024]; + char psbuf[512]; + + if (!protoserv_init) { + initprotoserv(); + ++protoserv_init; + } + + /* Line count */ + n = 0; + + /* Terminate protocol */ + cp = proto; + while (!isspace(*cp) && *cp != '\0') + ++cp; + if (*cp != '\0') + *cp++ = '\0'; + + /* Find services */ + *smtpp = 0; + sawparen = 0; + if (*cp == '(') { + ++sawparen; + ++cp; + while (isspace(*cp)) + ++cp; + } + for (;;) { + if (*cp == '\0') { + if (!sawparen) + break; + if (fgets(buf, sizeof(buf), f) == NULL) { + *errstrp = "mismatched parens"; + return (n); + } + ++n; + cp = buf; + while (isspace(*cp)) + ++cp; + } + /* Find end of service, converting to lowercase */ + for (serv = cp; !isspace(*cp) && *cp != '\0'; ++cp) + if (isupper(*cp)) + *cp = tolower(*cp); + if (*cp != '\0') + *cp++ = '\0'; + if (sawparen && *cp == ')') { + /* XXX should check for trailing junk */ + break; + } + + (void)sprintf(psbuf, "%s/%s", serv, proto); + + if (*serv == 's' && strcmp(psbuf, "tcp/smtp") == 0) + ++*smtpp; + + for (p = protoserv; *p != NULL; ++p) + if (*psbuf == **p && strcmp(psbuf, *p) == 0) { + break; + } + if (*p == NULL) { + sprintf(errstr, "%s unknown", psbuf); + *errstrp = errstr; + break; + } + } + + return (n); +} + +int +checkserv(register const char *serv, register char **p) +{ + for (; *p != NULL; ++p) + if (*serv == **p && strcmp(serv, *p) == 0) + return (1); + return (0); +} + +void +initprotoserv(void) +{ + register char *cp; + register struct servent *sp; + char psbuf[512]; + + protoserv_len = 256; + protoserv = (char **)malloc(protoserv_len * sizeof(*protoserv)); + if (protoserv == NULL) { + fprintf(stderr, "%s: nslint: malloc: %s\n", + prog, strerror(errno)); + exit(1); + } + + while ((sp = getservent()) != NULL) { + (void)sprintf(psbuf, "%s/%s", sp->s_name, sp->s_proto); + + /* Convert to lowercase */ + for (cp = psbuf; *cp != '\0'; ++cp) + if (isupper(*cp)) + *cp = tolower(*cp); + + if (protoserv_last + 1 >= protoserv_len) { + protoserv_len <<= 1; + protoserv = realloc(protoserv, + protoserv_len * sizeof(*protoserv)); + if (protoserv == NULL) { + fprintf(stderr, "%s: nslint: realloc: %s\n", + prog, strerror(errno)); + exit(1); + } + } + protoserv[protoserv_last] = savestr(psbuf); + ++protoserv_last; + } + protoserv[protoserv_last] = NULL; +} + +/* + * Returns true if name contains a dot but not a trailing dot. + * Special case: allow a single dot if the second part is not one + * of the 3 or 4 letter top level domains or is any 2 letter TLD + */ +int +checkdots(register const char *name) +{ + register const char *cp, *cp2; + + if ((cp = strchr(name, '.')) == NULL) + return (0); + cp2 = name + strlen(name) - 1; + if (cp2 >= name && *cp2 == '.') + return (0); + + /* Return true of more than one dot*/ + ++cp; + if (strchr(cp, '.') != NULL) + return (1); + + if (strlen(cp) == 2 || + strcasecmp(cp, "gov") == 0 || + strcasecmp(cp, "edu") == 0 || + strcasecmp(cp, "com") == 0 || + strcasecmp(cp, "net") == 0 || + strcasecmp(cp, "org") == 0 || + strcasecmp(cp, "mil") == 0 || + strcasecmp(cp, "int") == 0 || + strcasecmp(cp, "nato") == 0 || + strcasecmp(cp, "arpa") == 0) + return (1); + return (0); +} + +int +cmpaddr(register const void *ip1, register const void *ip2) +{ + register u_int32_t a1, a2; + + a1 = (*(struct item **)ip1)->addr; + a2 = (*(struct item **)ip2)->addr; + + if (a1 < a2) + return (-1); + else if (a1 > a2) + return (1); + else + return (0); +} + +int +cmphost(register const void *ip1, register const void *ip2) +{ + register const char *s1, *s2; + + s1 = (*(struct item **)ip1)->host; + s2 = (*(struct item **)ip2)->host; + + return (strcasecmp(s1, s2)); +} + +/* Returns a pointer after the next token or quoted string, else NULL */ +char * +parsequoted(register char *cp) +{ + + if (*cp == '"') { + ++cp; + while (*cp != '"' && *cp != '\0') + ++cp; + if (*cp != '"') + return (NULL); + ++cp; + } else { + while (!isspace(*cp) && *cp != '\0') + ++cp; + } + return (cp); +} + +__dead void +usage(void) +{ + extern char version[]; + + fprintf(stderr, "Version %s\n", version); + fprintf(stderr, "usage: %s [-d] [-b named.boot] [-B nslint.boot]\n", + prog); + fprintf(stderr, " %s [-d] [-c named.conf] [-C nslint.conf]\n", + prog); + exit(1); +} diff --git a/contrib/nslint-2.1a3/savestr.c b/contrib/nslint-2.1a3/savestr.c new file mode 100644 index 00000000..00fc51bf --- /dev/null +++ b/contrib/nslint-2.1a3/savestr.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 1997 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifndef lint +static const char rcsid[] = + "@(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/savestr.c,v 1.1 2001/12/21 04:12:04 marka Exp $ (LBL)"; +#endif + +#include <sys/types.h> + +#ifdef HAVE_MALLOC_H +#include <malloc.h> +#endif +#include <stdio.h> +#include <stdlib.h> + +#include "gnuc.h" +#ifdef HAVE_OS_PROTO_H +#include "os-proto.h" +#endif + +#include "savestr.h" + +/* A replacement for strdup() that cuts down on malloc() overhead */ +char * +savestr(register const char *str) +{ + register u_int size; + register char *p; + static char *strptr = NULL; + static u_int strsize = 0; + + size = strlen(str) + 1; + if (size > strsize) { + strsize = 1024; + if (strsize < size) + strsize = size; + strptr = (char *)malloc(strsize); + if (strptr == NULL) { + fprintf(stderr, "savestr: malloc\n"); + exit(1); + } + } + (void)strcpy(strptr, str); + p = strptr; + strptr += size; + strsize -= size; + return (p); +} diff --git a/contrib/nslint-2.1a3/savestr.h b/contrib/nslint-2.1a3/savestr.h new file mode 100644 index 00000000..7613ab12 --- /dev/null +++ b/contrib/nslint-2.1a3/savestr.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 1997 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by the University of California, + * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of + * the University nor the names of its contributors may be used to endorse + * or promote products derived from this software without specific prior + * written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * + * @(#) $Header: /proj/cvs/isc/bind9/contrib/nslint-2.1a3/savestr.h,v 1.1 2001/12/21 04:12:05 marka Exp $ (LBL) + */ + +extern char *savestr(const char *); diff --git a/contrib/nslint-2.1a3/strerror.c b/contrib/nslint-2.1a3/strerror.c new file mode 100644 index 00000000..d330a652 --- /dev/null +++ b/contrib/nslint-2.1a3/strerror.c @@ -0,0 +1,75 @@ +/* + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 THE REGENTS OR CONTRIBUTORS 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 DAMAGE. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static const char sccsid[] = "@(#)strerror.c 8.1 (Berkeley) 6/4/93"; +#endif /* LIBC_SCCS and not lint */ + +#include <sys/types.h> + +#include <string.h> + +#include "gnuc.h" +#ifdef HAVE_OS_PROTO_H +#include "os-proto.h" +#endif + +char * +strerror(num) + int num; +{ + extern int sys_nerr; + extern char *sys_errlist[]; +#define UPREFIX "Unknown error: " + static char ebuf[40] = UPREFIX; /* 64-bit number + slop */ + register unsigned int errnum; + register char *p, *t; + char tmp[40]; + + errnum = num; /* convert to unsigned */ + if (errnum < sys_nerr) + return(sys_errlist[errnum]); + + /* Do this by hand, so we don't include stdio(3). */ + t = tmp; + do { + *t++ = "0123456789"[errnum % 10]; + } while (errnum /= 10); + for (p = ebuf + sizeof(UPREFIX) - 1;;) { + *p++ = *--t; + if (t <= tmp) + break; + } + *p = '\0'; + return(ebuf); +} diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml index 708a2943..3bdad868 100644 --- a/doc/arm/Bv9ARM-book.xml +++ b/doc/arm/Bv9ARM-book.xml @@ -2,7 +2,7 @@ <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.0//EN" "http://www.oasis-open.org/docbook/xml/4.0/docbookx.dtd"> -<!-- File: $Id: Bv9ARM-book.xml,v 1.155.2.10 2001/11/07 19:07:29 gson Exp $ --> +<!-- File: $Id: Bv9ARM-book.xml,v 1.155.2.16 2002/01/23 01:41:17 gson Exp $ --> <book> <title>BIND 9 Administrator Reference Manual</title> @@ -2209,12 +2209,20 @@ complete set of local IPv6 addresses for a host. used by the <command>rndc</command> utility to send commands to and retrieve non-DNS results from a nameserver.</para> - <para>An <command>inet</command> control channel is a TCP/IP - socket accessible to the Internet, created at the specified + <para>An <command>inet</command> control channel is a TCP + socket listening at the specified <command>ip_port</command> on the specified - <command>ip_addr</command>. If no port is specified, port 953 - is used by default. "*" cannot be used for - <command>ip_port</command>.</para> + <command>ip_addr</command>, which can be an IPv4 or IPv6 + address. An <command>ip_addr</command> + of <literal>*</literal> is interpreted as the IPv4 wildcard + address; connections will be accepted on any of the system's + IPv4 addresses. To listen on the IPv6 wildcard address, + use an <command>ip_addr</command> of <literal>::</literal>. + If you will only use <command>rndc</command> on the local host, + using the loopback address (<literal>127.0.0.1</literal> + or <literal>::1</literal>) is recommended for maximum + security. + </para> <para>The ability to issue commands over the control channel is restricted by the <command>allow</command> and @@ -2257,7 +2265,7 @@ It makes it possible to use an existing <acronym>BIND</acronym> 8 configuration file in <acronym>BIND</acronym> 9 unchanged, and still have <command>rndc</command> work the same way <command>ndc</command> worked in BIND 8, simply by executing the -command <userinput>rndc-keygen -a</userinput> after BIND 9 is +command <userinput>rndc-confgen -a</userinput> after BIND 9 is installed. </para> @@ -2282,6 +2290,11 @@ installed. <acronym>BIND</acronym> 8 configuration file, it is ignored and a warning is logged.</para> +<para> +To disable the command channel, use an empty <command>controls</command> +statement: <command>controls { };</command>. +</para> + </sect2> <sect2> <title><command>include</command> Statement Grammar</title> @@ -3854,6 +3867,9 @@ The results are returned as a synthetic PTR record in <para>The synthetic records have a TTL of zero. DNSSEC validation of synthetic responses is not currently supported; therefore responses containing synthetic RRs will not have the AD flag set.</para> + +<note><para><command>allow-v6-synthesis</command> is only performed for +clients that are supplied recursive service.</para></note> </sect3> <sect3 id="tuning"><title>Tuning</title> @@ -4683,6 +4699,10 @@ or historical (h) and no longer in general use):</para> Experimental.</para></entry> </row> <row rowsep = "0"> +<entry colname = "1"><para>CERT</para></entry> +<entry colname = "2"><para>holds a digital certificate.</para></entry> +</row> +<row rowsep = "0"> <entry colname = "1"><para>CNAME</para></entry> <entry colname = "2"><para>identifies the canonical name of an alias.</para></entry> </row> @@ -4693,6 +4713,10 @@ Replaces the domain name specified with another name to be looked up. Described in RFC 2672.</para></entry> </row> <row rowsep = "0"> +<entry colname = "1"><para>GPOS</para></entry> +<entry colname = "2"><para>Specifies the global position. Superseded by LOC.</para></entry> +</row> +<row rowsep = "0"> <entry colname = "1"><para>HINFO</para></entry> <entry colname = "2"><para>identifies the CPU and OS used by a host.</para></entry> </row> @@ -4707,6 +4731,11 @@ Experimental.</para></entry> DNS name.</para></entry> </row> <row rowsep = "0"> +<entry colname = "1"><para>KX</para></entry> +<entry colname = "2"><para>identifies a key exchanger for this +DNS name.</para></entry> +</row> +<row rowsep = "0"> <entry colname = "1"><para>LOC</para></entry> <entry colname = "2"><para>(x) for storing GPS info. See RFC 1876. Experimental.</para></entry> @@ -4717,6 +4746,14 @@ Experimental.</para></entry> See RFC 974 for details.</para></entry> </row> <row rowsep = "0"> +<entry colname = "1"><para>NAPTR</para></entry> +<entry colname = "2"><para>name authority pointer.</para></entry> +</row> +<row rowsep = "0"> +<entry colname = "1"><para>NSAP</para></entry> +<entry colname = "2"><para>a network service access point.</para></entry> +</row> +<row rowsep = "0"> <entry colname = "1"><para>NS</para></entry> <entry colname = "2"><para>the authoritative nameserver for the domain.</para></entry> @@ -4734,6 +4771,11 @@ See RFC 2535 for details.</para></entry> name space.</para></entry> </row> <row rowsep = "0"> +<entry colname = "1"><para>PX</para></entry> +<entry colname = "2"><para>provides mappings between RFC 822 and X.400 +addresses.</para></entry> +</row> +<row rowsep = "0"> <entry colname = "1"><para>RP</para></entry> <entry colname = "2"><para>(x) information on persons responsible for the domain. Experimental.</para></entry> @@ -4758,6 +4800,10 @@ in the secure DNS. See RFC 2535 for details.</para></entry> services (replaces WKS).</para></entry> </row> <row rowsep = "0"> +<entry colname = "1"><para>TXT</para></entry> +<entry colname = "2"><para>text records.</para></entry> +</row> +<row rowsep = "0"> <entry colname = "1"><para>WKS</para></entry> <entry colname = "2"><para>(h) information about which well known network services, such as SMTP, that a domain supports. Historical, @@ -4937,14 +4983,17 @@ domain names.</para> </tgroup></informaltable> <para>This example shows two addresses for <literal>XX.LCS.MIT.EDU</literal>, each of a different class.</para></sect3></sect2> + <sect2><title>Discussion of MX Records</title> + <para>As described above, domain servers store information as a series of resource records, each of which contains a particular piece of information about a given domain name (which is usually, but not always, a host). The simplest way to think of a RR is as -a typed pair of datum, a domain name matched with relevant data, -and stored with some additional type information to help systems determine -when the RR is relevant.</para> +a typed pair of data, a domain name matched with a relevant datum, +and stored with some additional type information to help systems +determine when the RR is relevant.</para> + <para>MX records are used to control delivery of email. The data specified in the record is a priority and a domain name. The priority controls the order in which email delivery is attempted, with the diff --git a/doc/arm/Bv9ARM.ch06.html b/doc/arm/Bv9ARM.ch06.html index fce74368..e6ee27fa 100644 --- a/doc/arm/Bv9ARM.ch06.html +++ b/doc/arm/Bv9ARM.ch06.html @@ -91,7 +91,7 @@ HREF="Bv9ARM.ch06.html#Configuration_File_Grammar" ></DT ><DT >6.3. <A -HREF="Bv9ARM.ch06.html#AEN3524" +HREF="Bv9ARM.ch06.html#AEN3536" >Zone File</A ></DT ></DL @@ -1492,8 +1492,8 @@ CLASS="command" >An <B CLASS="command" >inet</B -> control channel is a TCP/IP - socket accessible to the Internet, created at the specified +> control channel is a TCP + socket listening at the specified <B CLASS="command" >ip_port</B @@ -1501,12 +1501,38 @@ CLASS="command" <B CLASS="command" >ip_addr</B ->. If no port is specified, port 953 - is used by default. "*" cannot be used for - <B +>, which can be an IPv4 or IPv6 + address. An <B CLASS="command" ->ip_port</B ->.</P +>ip_addr</B +> + of <TT +CLASS="literal" +>*</TT +> is interpreted as the IPv4 wildcard + address; connections will be accepted on any of the system's + IPv4 addresses. To listen on the IPv6 wildcard address, + use an <B +CLASS="command" +>ip_addr</B +> of <TT +CLASS="literal" +>::</TT +>. + If you will only use <B +CLASS="command" +>rndc</B +> on the local host, + using the loopback address (<TT +CLASS="literal" +>127.0.0.1</TT +> + or <TT +CLASS="literal" +>::1</TT +>) is recommended for maximum + security. + </P ><P >The ability to issue commands over the control channel is restricted by the <B @@ -1637,7 +1663,7 @@ CLASS="command" command <TT CLASS="userinput" ><B ->rndc-keygen -a</B +>rndc-confgen -a</B ></TT > after BIND 9 is installed. @@ -1692,13 +1718,23 @@ CLASS="acronym" >BIND</SPAN > 8 configuration file, it is ignored and a warning is logged.</P +><P +> To disable the command channel, use an empty <B +CLASS="command" +>controls</B +> +statement: <B +CLASS="command" +>controls { };</B +>. +</P ></DIV ><DIV CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN1520" +NAME="AEN1529" >6.2.5. <B CLASS="command" >include</B @@ -1718,7 +1754,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN1525" +NAME="AEN1534" >6.2.6. <B CLASS="command" >include</B @@ -1747,7 +1783,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN1532" +NAME="AEN1541" >6.2.7. <B CLASS="command" >key</B @@ -1781,7 +1817,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN1539" +NAME="AEN1548" >6.2.8. <B CLASS="command" >key</B @@ -1859,7 +1895,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN1557" +NAME="AEN1566" >6.2.9. <B CLASS="command" >logging</B @@ -2019,7 +2055,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN1597" +NAME="AEN1606" >6.2.10. <B CLASS="command" >logging</B @@ -2082,7 +2118,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN1613" +NAME="AEN1622" >6.2.10.1. The <B CLASS="command" >channel</B @@ -2524,7 +2560,7 @@ CLASS="acronym" ><DIV CLASS="informaltable" ><A -NAME="AEN1717" +NAME="AEN1726" ></A ><P ></P @@ -2895,7 +2931,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN1828" +NAME="AEN1837" >6.2.11. <B CLASS="command" >lwres</B @@ -2992,7 +3028,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN1852" +NAME="AEN1861" >6.2.12. <B CLASS="command" >lwres</B @@ -3066,7 +3102,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN1871" +NAME="AEN1880" >6.2.13. <B CLASS="command" >options</B @@ -4025,7 +4061,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN2089" +NAME="AEN2098" >6.2.14. <B CLASS="command" >options</B @@ -5008,7 +5044,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN2389" +NAME="AEN2398" >6.2.14.2. Forwarding</A ></H3 ><P @@ -5212,7 +5248,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN2454" +NAME="AEN2463" >6.2.14.4. Interfaces</A ></H3 ><P @@ -5307,7 +5343,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN2480" +NAME="AEN2489" >6.2.14.5. Query Address</A ></H3 ><P @@ -5739,7 +5775,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN2619" +NAME="AEN2628" >6.2.14.7. Operating System Resource Limits</A ></H3 ><P @@ -5859,7 +5895,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN2656" +NAME="AEN2665" >6.2.14.8. Server Resource Limits</A ></H3 ><P @@ -5943,7 +5979,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN2684" +NAME="AEN2693" >6.2.14.9. Periodic Task Intervals</A ></H3 ><P @@ -6310,7 +6346,7 @@ CLASS="command" ><DIV CLASS="informaltable" ><A -NAME="AEN2772" +NAME="AEN2781" ></A ><P ></P @@ -6498,6 +6534,20 @@ CLASS="literal" >The synthetic records have a TTL of zero. DNSSEC validation of synthetic responses is not currently supported; therefore responses containing synthetic RRs will not have the AD flag set.</P +><DIV +CLASS="note" +><BLOCKQUOTE +CLASS="note" +><P +><B +>Note: </B +><B +CLASS="command" +>allow-v6-synthesis</B +> is only performed for +clients that are supplied recursive service.</P +></BLOCKQUOTE +></DIV ></DIV ><DIV CLASS="sect3" @@ -6697,7 +6747,7 @@ number is identical to the number in the beginning line.</P ><DIV CLASS="informaltable" ><A -NAME="AEN2884" +NAME="AEN2896" ></A ><P ></P @@ -7133,7 +7183,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN2999" +NAME="AEN3011" >6.2.17. <B CLASS="command" >trusted-keys</B @@ -7208,7 +7258,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN3015" +NAME="AEN3027" >6.2.18. <B CLASS="command" >trusted-keys</B @@ -7243,7 +7293,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN3023" +NAME="AEN3035" >6.2.19. <B CLASS="command" >view</B @@ -7318,7 +7368,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN3039" +NAME="AEN3051" >6.2.20. <B CLASS="command" >view</B @@ -7969,7 +8019,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN3190" +NAME="AEN3202" >6.2.22. <B CLASS="command" >zone</B @@ -7980,13 +8030,13 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN3193" +NAME="AEN3205" >6.2.22.1. Zone Types</A ></H3 ><DIV CLASS="informaltable" ><A -NAME="AEN3195" +NAME="AEN3207" ></A ><P ></P @@ -8224,7 +8274,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN3250" +NAME="AEN3262" >6.2.22.2. Class</A ></H3 ><P @@ -8262,7 +8312,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN3260" +NAME="AEN3272" >6.2.22.3. Zone Options</A ></H3 ><P @@ -8903,7 +8953,7 @@ CLASS="varname" ><DIV CLASS="informaltable" ><A -NAME="AEN3494" +NAME="AEN3506" ></A ><P ></P @@ -9010,7 +9060,7 @@ CLASS="sect1" ><H1 CLASS="sect1" ><A -NAME="AEN3524" +NAME="AEN3536" >6.3. Zone File</A ></H1 ><DIV @@ -9031,7 +9081,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN3529" +NAME="AEN3541" >6.3.1.1. Resource Records</A ></H3 ><P @@ -9054,7 +9104,7 @@ HREF="Bv9ARM.ch06.html#rrset_ordering" ><DIV CLASS="informaltable" ><A -NAME="AEN3535" +NAME="AEN3547" ></A ><P ></P @@ -9165,7 +9215,7 @@ or historical (h) and no longer in general use):</P ><DIV CLASS="informaltable" ><A -NAME="AEN3567" +NAME="AEN3579" ></A ><P ></P @@ -9245,6 +9295,22 @@ WIDTH="84" ALIGN="LEFT" VALIGN="MIDDLE" ><P +>CERT</P +></TD +><TD +WIDTH="348" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P +>holds a digital certificate.</P +></TD +></TR +><TR +><TD +WIDTH="84" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P >CNAME</P ></TD ><TD @@ -9279,6 +9345,22 @@ WIDTH="84" ALIGN="LEFT" VALIGN="MIDDLE" ><P +>GPOS</P +></TD +><TD +WIDTH="348" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P +>Specifies the global position. Superseded by LOC.</P +></TD +></TR +><TR +><TD +WIDTH="84" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P >HINFO</P ></TD ><TD @@ -9329,6 +9411,23 @@ WIDTH="84" ALIGN="LEFT" VALIGN="MIDDLE" ><P +>KX</P +></TD +><TD +WIDTH="348" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P +>identifies a key exchanger for this +DNS name.</P +></TD +></TR +><TR +><TD +WIDTH="84" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P >LOC</P ></TD ><TD @@ -9363,6 +9462,38 @@ WIDTH="84" ALIGN="LEFT" VALIGN="MIDDLE" ><P +>NAPTR</P +></TD +><TD +WIDTH="348" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P +>name authority pointer.</P +></TD +></TR +><TR +><TD +WIDTH="84" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P +>NSAP</P +></TD +><TD +WIDTH="348" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P +>a network service access point.</P +></TD +></TR +><TR +><TD +WIDTH="84" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P >NS</P ></TD ><TD @@ -9416,6 +9547,23 @@ WIDTH="84" ALIGN="LEFT" VALIGN="MIDDLE" ><P +>PX</P +></TD +><TD +WIDTH="348" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P +>provides mappings between RFC 822 and X.400 +addresses.</P +></TD +></TR +><TR +><TD +WIDTH="84" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P >RP</P ></TD ><TD @@ -9500,6 +9648,22 @@ WIDTH="84" ALIGN="LEFT" VALIGN="MIDDLE" ><P +>TXT</P +></TD +><TD +WIDTH="348" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P +>text records.</P +></TD +></TR +><TR +><TD +WIDTH="84" +ALIGN="LEFT" +VALIGN="MIDDLE" +><P >WKS</P ></TD ><TD @@ -9542,7 +9706,7 @@ are currently valid in the DNS:</P ><DIV CLASS="informaltable" ><A -NAME="AEN3679" +NAME="AEN3726" ></A ><P ></P @@ -9594,7 +9758,7 @@ data that describes the resource:</P ><DIV CLASS="informaltable" ><A -NAME="AEN3695" +NAME="AEN3742" ></A ><P ></P @@ -9771,7 +9935,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN3743" +NAME="AEN3790" >6.3.1.2. Textual expression of RRs</A ></H3 ><P @@ -9801,7 +9965,7 @@ knowledge of the typical representation for the data.</P ><DIV CLASS="informaltable" ><A -NAME="AEN3750" +NAME="AEN3797" ></A ><P ></P @@ -10010,7 +10174,7 @@ domain names.</P ><DIV CLASS="informaltable" ><A -NAME="AEN3816" +NAME="AEN3863" ></A ><P ></P @@ -10101,7 +10265,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN3844" +NAME="AEN3891" >6.3.2. Discussion of MX Records</A ></H2 ><P @@ -10109,9 +10273,9 @@ NAME="AEN3844" series of resource records, each of which contains a particular piece of information about a given domain name (which is usually, but not always, a host). The simplest way to think of a RR is as -a typed pair of datum, a domain name matched with relevant data, -and stored with some additional type information to help systems determine -when the RR is relevant.</P +a typed pair of data, a domain name matched with a relevant datum, +and stored with some additional type information to help systems +determine when the RR is relevant.</P ><P >MX records are used to control delivery of email. The data specified in the record is a priority and a domain name. The priority @@ -10134,7 +10298,7 @@ pointed to by the CNAME.</P ><DIV CLASS="informaltable" ><A -NAME="AEN3850" +NAME="AEN3897" ></A ><P ></P @@ -10430,7 +10594,7 @@ used in a zone file.</P ><DIV CLASS="informaltable" ><A -NAME="AEN3942" +NAME="AEN3989" ></A ><P ></P @@ -10513,7 +10677,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN3965" +NAME="AEN4012" >6.3.4. Inverse Mapping in IPv4</A ></H2 ><P @@ -10537,7 +10701,7 @@ CLASS="optional" ><DIV CLASS="informaltable" ><A -NAME="AEN3970" +NAME="AEN4017" ></A ><P ></P @@ -10617,7 +10781,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN3992" +NAME="AEN4039" >6.3.5. Other Zone File Directives</A ></H2 ><P @@ -10642,7 +10806,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN3999" +NAME="AEN4046" >6.3.5.1. The <B CLASS="command" >$ORIGIN</B @@ -10712,7 +10876,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN4019" +NAME="AEN4066" >6.3.5.2. The <B CLASS="command" >$INCLUDE</B @@ -10794,7 +10958,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN4039" +NAME="AEN4086" >6.3.5.3. The <B CLASS="command" >$TTL</B @@ -10834,7 +10998,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN4050" +NAME="AEN4097" >6.3.6. <SPAN CLASS="acronym" >BIND</SPAN @@ -10913,7 +11077,7 @@ CLASS="literal" ><DIV CLASS="informaltable" ><A -NAME="AEN4070" +NAME="AEN4117" ></A ><P ></P diff --git a/doc/arm/Bv9ARM.ch07.html b/doc/arm/Bv9ARM.ch07.html index fbf9237a..f649ebc8 100644 --- a/doc/arm/Bv9ARM.ch07.html +++ b/doc/arm/Bv9ARM.ch07.html @@ -86,7 +86,7 @@ HREF="Bv9ARM.ch07.html#Access_Control_Lists" ></DT ><DT >7.2. <A -HREF="Bv9ARM.ch07.html#AEN4142" +HREF="Bv9ARM.ch07.html#AEN4189" ><B CLASS="command" >chroot</B @@ -188,7 +188,7 @@ CLASS="sect1" ><H1 CLASS="sect1" ><A -NAME="AEN4142" +NAME="AEN4189" >7.2. <B CLASS="command" >chroot</B @@ -267,7 +267,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN4165" +NAME="AEN4212" >7.2.1. The <B CLASS="command" >chroot</B @@ -340,7 +340,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN4183" +NAME="AEN4230" >7.2.2. Using the <B CLASS="command" >setuid</B diff --git a/doc/arm/Bv9ARM.ch08.html b/doc/arm/Bv9ARM.ch08.html index efc0e988..6eaf6fa3 100644 --- a/doc/arm/Bv9ARM.ch08.html +++ b/doc/arm/Bv9ARM.ch08.html @@ -78,17 +78,17 @@ CLASS="TOC" ></DT ><DT >8.1. <A -HREF="Bv9ARM.ch08.html#AEN4204" +HREF="Bv9ARM.ch08.html#AEN4251" >Common Problems</A ></DT ><DT >8.2. <A -HREF="Bv9ARM.ch08.html#AEN4209" +HREF="Bv9ARM.ch08.html#AEN4256" >Incrementing and Changing the Serial Number</A ></DT ><DT >8.3. <A -HREF="Bv9ARM.ch08.html#AEN4214" +HREF="Bv9ARM.ch08.html#AEN4261" >Where Can I Get Help?</A ></DT ></DL @@ -98,7 +98,7 @@ CLASS="sect1" ><H1 CLASS="sect1" ><A -NAME="AEN4204" +NAME="AEN4251" >8.1. Common Problems</A ></H1 ><DIV @@ -106,7 +106,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN4206" +NAME="AEN4253" >8.1.1. It's not working; how can I figure out what's wrong?</A ></H2 ><P @@ -122,7 +122,7 @@ CLASS="sect1" ><H1 CLASS="sect1" ><A -NAME="AEN4209" +NAME="AEN4256" >8.2. Incrementing and Changing the Serial Number</A ></H1 ><P @@ -151,7 +151,7 @@ CLASS="sect1" ><H1 CLASS="sect1" ><A -NAME="AEN4214" +NAME="AEN4261" >8.3. Where Can I Get Help?</A ></H1 ><P diff --git a/doc/arm/Bv9ARM.ch09.html b/doc/arm/Bv9ARM.ch09.html index 05989bfe..d04c2847 100644 --- a/doc/arm/Bv9ARM.ch09.html +++ b/doc/arm/Bv9ARM.ch09.html @@ -72,7 +72,7 @@ CLASS="TOC" ></DT ><DT >A.1. <A -HREF="Bv9ARM.ch09.html#AEN4230" +HREF="Bv9ARM.ch09.html#AEN4277" >Acknowledgements</A ></DT ><DT @@ -85,7 +85,7 @@ CLASS="acronym" ></DT ><DT >A.3. <A -HREF="Bv9ARM.ch09.html#AEN4271" +HREF="Bv9ARM.ch09.html#AEN4318" >General <SPAN CLASS="acronym" >DNS</SPAN @@ -103,7 +103,7 @@ CLASS="sect1" ><H1 CLASS="sect1" ><A -NAME="AEN4230" +NAME="AEN4277" >A.1. Acknowledgements</A ></H1 ><DIV @@ -111,7 +111,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN4232" +NAME="AEN4279" >A.1.1. A Brief History of the <SPAN CLASS="acronym" >DNS</SPAN @@ -246,7 +246,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN4262" +NAME="AEN4309" >A.2.1.1. HS = hesiod</A ></H3 ><P @@ -267,7 +267,7 @@ CLASS="sect3" ><H3 CLASS="sect3" ><A -NAME="AEN4267" +NAME="AEN4314" >A.2.1.2. CH = chaos</A ></H3 ><P @@ -285,7 +285,7 @@ CLASS="sect1" ><H1 CLASS="sect1" ><A -NAME="AEN4271" +NAME="AEN4318" >A.3. General <SPAN CLASS="acronym" >DNS</SPAN @@ -324,7 +324,7 @@ Unicast address scheme. For more information, see RFC 2374.</P ><DIV CLASS="informaltable" ><A -NAME="AEN4282" +NAME="AEN4329" ></A ><P ></P @@ -543,7 +543,7 @@ VALIGN="MIDDLE" <DIV CLASS="informaltable" ><A -NAME="AEN4351" +NAME="AEN4398" ></A ><P ></P @@ -726,7 +726,7 @@ unicast address consists of:</P ><DIV CLASS="informaltable" ><A -NAME="AEN4406" +NAME="AEN4453" ></A ><P ></P @@ -886,19 +886,19 @@ TARGET="_top" </P ><H3 ><A -NAME="AEN4450" +NAME="AEN4497" >Bibliography</A ></H3 ><H1 CLASS="bibliodiv" ><A -NAME="AEN4451" +NAME="AEN4498" >Standards</A ></H1 ><DIV CLASS="biblioentry" ><A -NAME="AEN4453" +NAME="AEN4500" ></A ><P >[RFC974] <SPAN @@ -915,7 +915,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4460" +NAME="AEN4507" ></A ><P >[RFC1034] <SPAN @@ -932,7 +932,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4467" +NAME="AEN4514" ></A ><P >[RFC1035] <SPAN @@ -956,7 +956,7 @@ NAME="proposed_standards" ><DIV CLASS="biblioentry" ><A -NAME="AEN4476" +NAME="AEN4523" ></A ><P >[RFC2181] <SPAN @@ -976,7 +976,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4484" +NAME="AEN4531" ></A ><P >[RFC2308] <SPAN @@ -996,7 +996,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4492" +NAME="AEN4539" ></A ><P >[RFC1995] <SPAN @@ -1016,7 +1016,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4500" +NAME="AEN4547" ></A ><P >[RFC1996] <SPAN @@ -1033,7 +1033,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4507" +NAME="AEN4554" ></A ><P >[RFC2136] <SPAN @@ -1059,7 +1059,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4524" +NAME="AEN4571" ></A ><P >[RFC2845] <SPAN @@ -1088,13 +1088,13 @@ STYLE="margin-left=0.5in" ><H1 CLASS="bibliodiv" ><A -NAME="AEN4543" +NAME="AEN4590" >Proposed Standards Still Under Development</A ></H1 ><DIV CLASS="biblioentry" ><A -NAME="AEN4548" +NAME="AEN4595" ></A ><P >[RFC1886] <SPAN @@ -1117,7 +1117,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4560" +NAME="AEN4607" ></A ><P >[RFC2065] <SPAN @@ -1137,7 +1137,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4572" +NAME="AEN4619" ></A ><P >[RFC2137] <SPAN @@ -1154,7 +1154,7 @@ STYLE="margin-left=0.5in" ><H1 CLASS="bibliodiv" ><A -NAME="AEN4580" +NAME="AEN4627" >Other Important RFCs About <SPAN CLASS="acronym" >DNS</SPAN @@ -1163,7 +1163,7 @@ CLASS="acronym" ><DIV CLASS="biblioentry" ><A -NAME="AEN4583" +NAME="AEN4630" ></A ><P >[RFC1535] <SPAN @@ -1183,7 +1183,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4591" +NAME="AEN4638" ></A ><P >[RFC1536] <SPAN @@ -1215,7 +1215,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4612" +NAME="AEN4659" ></A ><P >[RFC1982] <SPAN @@ -1235,13 +1235,13 @@ STYLE="margin-left=0.5in" ><H1 CLASS="bibliodiv" ><A -NAME="AEN4623" +NAME="AEN4670" >Resource Record Types</A ></H1 ><DIV CLASS="biblioentry" ><A -NAME="AEN4625" +NAME="AEN4672" ></A ><P >[RFC1183] <SPAN @@ -1270,7 +1270,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4643" +NAME="AEN4690" ></A ><P >[RFC1706] <SPAN @@ -1293,7 +1293,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4655" +NAME="AEN4702" ></A ><P >[RFC2168] <SPAN @@ -1314,7 +1314,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4666" +NAME="AEN4713" ></A ><P >[RFC1876] <SPAN @@ -1341,7 +1341,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4683" +NAME="AEN4730" ></A ><P >[RFC2052] <SPAN @@ -1365,7 +1365,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4695" +NAME="AEN4742" ></A ><P >[RFC2163] <SPAN @@ -1386,7 +1386,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4703" +NAME="AEN4750" ></A ><P >[RFC2230] <SPAN @@ -1406,7 +1406,7 @@ STYLE="margin-left=0.5in" ><H1 CLASS="bibliodiv" ><A -NAME="AEN4711" +NAME="AEN4758" ><SPAN CLASS="acronym" >DNS</SPAN @@ -1415,7 +1415,7 @@ CLASS="acronym" ><DIV CLASS="biblioentry" ><A -NAME="AEN4714" +NAME="AEN4761" ></A ><P >[RFC1101] <SPAN @@ -1435,7 +1435,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4722" +NAME="AEN4769" ></A ><P >[RFC1123] <SPAN @@ -1452,7 +1452,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4729" +NAME="AEN4776" ></A ><P >[RFC1591] <SPAN @@ -1469,7 +1469,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4736" +NAME="AEN4783" ></A ><P >[RFC2317] <SPAN @@ -1492,7 +1492,7 @@ STYLE="margin-left=0.5in" ><H1 CLASS="bibliodiv" ><A -NAME="AEN4750" +NAME="AEN4797" ><SPAN CLASS="acronym" >DNS</SPAN @@ -1501,7 +1501,7 @@ CLASS="acronym" ><DIV CLASS="biblioentry" ><A -NAME="AEN4753" +NAME="AEN4800" ></A ><P >[RFC1537] <SPAN @@ -1521,7 +1521,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4761" +NAME="AEN4808" ></A ><P >[RFC1912] <SPAN @@ -1541,7 +1541,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4769" +NAME="AEN4816" ></A ><P >[RFC1912] <SPAN @@ -1561,7 +1561,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4777" +NAME="AEN4824" ></A ><P >[RFC2010] <SPAN @@ -1581,7 +1581,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4788" +NAME="AEN4835" ></A ><P >[RFC2219] <SPAN @@ -1604,7 +1604,7 @@ STYLE="margin-left=0.5in" ><H1 CLASS="bibliodiv" ><A -NAME="AEN4800" +NAME="AEN4847" >Other <SPAN CLASS="acronym" >DNS</SPAN @@ -1613,7 +1613,7 @@ CLASS="acronym" ><DIV CLASS="biblioentry" ><A -NAME="AEN4806" +NAME="AEN4853" ></A ><P >[RFC1464] <SPAN @@ -1630,7 +1630,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4813" +NAME="AEN4860" ></A ><P >[RFC1713] <SPAN @@ -1650,7 +1650,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4821" +NAME="AEN4868" ></A ><P >[RFC1794] <SPAN @@ -1670,7 +1670,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4829" +NAME="AEN4876" ></A ><P >[RFC2240] <SPAN @@ -1687,7 +1687,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4836" +NAME="AEN4883" ></A ><P >[RFC2345] <SPAN @@ -1710,7 +1710,7 @@ STYLE="margin-left=0.5in" ><DIV CLASS="biblioentry" ><A -NAME="AEN4850" +NAME="AEN4897" ></A ><P >[RFC2352] <SPAN @@ -1727,13 +1727,13 @@ STYLE="margin-left=0.5in" ><H1 CLASS="bibliodiv" ><A -NAME="AEN4857" +NAME="AEN4904" >Obsolete and Unimplemented Experimental RRs</A ></H1 ><DIV CLASS="biblioentry" ><A -NAME="AEN4859" +NAME="AEN4906" ></A ><P >[RFC1712] <SPAN @@ -1784,7 +1784,7 @@ CLASS="sect2" ><H2 CLASS="sect2" ><A -NAME="AEN4880" +NAME="AEN4927" >A.4.3. Other Documents About <SPAN CLASS="acronym" >BIND</SPAN @@ -1794,13 +1794,13 @@ CLASS="acronym" ></P ><H3 ><A -NAME="AEN4884" +NAME="AEN4931" >Bibliography</A ></H3 ><DIV CLASS="biblioentry" ><A -NAME="AEN4885" +NAME="AEN4932" ></A ><P ><SPAN diff --git a/doc/arm/Bv9ARM.html b/doc/arm/Bv9ARM.html index 567c7036..fe6f909d 100644 --- a/doc/arm/Bv9ARM.html +++ b/doc/arm/Bv9ARM.html @@ -446,7 +446,7 @@ CLASS="command" ></DT ><DT >6.2.5. <A -HREF="Bv9ARM.ch06.html#AEN1520" +HREF="Bv9ARM.ch06.html#AEN1529" ><B CLASS="command" >include</B @@ -454,7 +454,7 @@ CLASS="command" ></DT ><DT >6.2.6. <A -HREF="Bv9ARM.ch06.html#AEN1525" +HREF="Bv9ARM.ch06.html#AEN1534" ><B CLASS="command" >include</B @@ -462,7 +462,7 @@ CLASS="command" ></DT ><DT >6.2.7. <A -HREF="Bv9ARM.ch06.html#AEN1532" +HREF="Bv9ARM.ch06.html#AEN1541" ><B CLASS="command" >key</B @@ -470,7 +470,7 @@ CLASS="command" ></DT ><DT >6.2.8. <A -HREF="Bv9ARM.ch06.html#AEN1539" +HREF="Bv9ARM.ch06.html#AEN1548" ><B CLASS="command" >key</B @@ -478,7 +478,7 @@ CLASS="command" ></DT ><DT >6.2.9. <A -HREF="Bv9ARM.ch06.html#AEN1557" +HREF="Bv9ARM.ch06.html#AEN1566" ><B CLASS="command" >logging</B @@ -486,7 +486,7 @@ CLASS="command" ></DT ><DT >6.2.10. <A -HREF="Bv9ARM.ch06.html#AEN1597" +HREF="Bv9ARM.ch06.html#AEN1606" ><B CLASS="command" >logging</B @@ -494,7 +494,7 @@ CLASS="command" ></DT ><DT >6.2.11. <A -HREF="Bv9ARM.ch06.html#AEN1828" +HREF="Bv9ARM.ch06.html#AEN1837" ><B CLASS="command" >lwres</B @@ -502,7 +502,7 @@ CLASS="command" ></DT ><DT >6.2.12. <A -HREF="Bv9ARM.ch06.html#AEN1852" +HREF="Bv9ARM.ch06.html#AEN1861" ><B CLASS="command" >lwres</B @@ -510,7 +510,7 @@ CLASS="command" ></DT ><DT >6.2.13. <A -HREF="Bv9ARM.ch06.html#AEN1871" +HREF="Bv9ARM.ch06.html#AEN1880" ><B CLASS="command" >options</B @@ -518,7 +518,7 @@ CLASS="command" ></DT ><DT >6.2.14. <A -HREF="Bv9ARM.ch06.html#AEN2089" +HREF="Bv9ARM.ch06.html#AEN2098" ><B CLASS="command" >options</B @@ -542,7 +542,7 @@ CLASS="command" ></DT ><DT >6.2.17. <A -HREF="Bv9ARM.ch06.html#AEN2999" +HREF="Bv9ARM.ch06.html#AEN3011" ><B CLASS="command" >trusted-keys</B @@ -550,7 +550,7 @@ CLASS="command" ></DT ><DT >6.2.18. <A -HREF="Bv9ARM.ch06.html#AEN3015" +HREF="Bv9ARM.ch06.html#AEN3027" ><B CLASS="command" >trusted-keys</B @@ -559,7 +559,7 @@ and Usage</A ></DT ><DT >6.2.19. <A -HREF="Bv9ARM.ch06.html#AEN3023" +HREF="Bv9ARM.ch06.html#AEN3035" ><B CLASS="command" >view</B @@ -567,7 +567,7 @@ CLASS="command" ></DT ><DT >6.2.20. <A -HREF="Bv9ARM.ch06.html#AEN3039" +HREF="Bv9ARM.ch06.html#AEN3051" ><B CLASS="command" >view</B @@ -584,7 +584,7 @@ Statement Grammar</A ></DT ><DT >6.2.22. <A -HREF="Bv9ARM.ch06.html#AEN3190" +HREF="Bv9ARM.ch06.html#AEN3202" ><B CLASS="command" >zone</B @@ -594,7 +594,7 @@ CLASS="command" ></DD ><DT >6.3. <A -HREF="Bv9ARM.ch06.html#AEN3524" +HREF="Bv9ARM.ch06.html#AEN3536" >Zone File</A ></DT ><DD @@ -606,7 +606,7 @@ HREF="Bv9ARM.ch06.html#types_of_resource_records_and_when_to_use_them" ></DT ><DT >6.3.2. <A -HREF="Bv9ARM.ch06.html#AEN3844" +HREF="Bv9ARM.ch06.html#AEN3891" >Discussion of MX Records</A ></DT ><DT @@ -616,17 +616,17 @@ HREF="Bv9ARM.ch06.html#Setting_TTLs" ></DT ><DT >6.3.4. <A -HREF="Bv9ARM.ch06.html#AEN3965" +HREF="Bv9ARM.ch06.html#AEN4012" >Inverse Mapping in IPv4</A ></DT ><DT >6.3.5. <A -HREF="Bv9ARM.ch06.html#AEN3992" +HREF="Bv9ARM.ch06.html#AEN4039" >Other Zone File Directives</A ></DT ><DT >6.3.6. <A -HREF="Bv9ARM.ch06.html#AEN4050" +HREF="Bv9ARM.ch06.html#AEN4097" ><SPAN CLASS="acronym" >BIND</SPAN @@ -656,7 +656,7 @@ HREF="Bv9ARM.ch07.html#Access_Control_Lists" ></DT ><DT >7.2. <A -HREF="Bv9ARM.ch07.html#AEN4142" +HREF="Bv9ARM.ch07.html#AEN4189" ><B CLASS="command" >chroot</B @@ -670,7 +670,7 @@ UNIX servers)</A ><DL ><DT >7.2.1. <A -HREF="Bv9ARM.ch07.html#AEN4165" +HREF="Bv9ARM.ch07.html#AEN4212" >The <B CLASS="command" >chroot</B @@ -678,7 +678,7 @@ CLASS="command" ></DT ><DT >7.2.2. <A -HREF="Bv9ARM.ch07.html#AEN4183" +HREF="Bv9ARM.ch07.html#AEN4230" >Using the <B CLASS="command" >setuid</B @@ -702,26 +702,26 @@ HREF="Bv9ARM.ch08.html" ><DL ><DT >8.1. <A -HREF="Bv9ARM.ch08.html#AEN4204" +HREF="Bv9ARM.ch08.html#AEN4251" >Common Problems</A ></DT ><DD ><DL ><DT >8.1.1. <A -HREF="Bv9ARM.ch08.html#AEN4206" +HREF="Bv9ARM.ch08.html#AEN4253" >It's not working; how can I figure out what's wrong?</A ></DT ></DL ></DD ><DT >8.2. <A -HREF="Bv9ARM.ch08.html#AEN4209" +HREF="Bv9ARM.ch08.html#AEN4256" >Incrementing and Changing the Serial Number</A ></DT ><DT >8.3. <A -HREF="Bv9ARM.ch08.html#AEN4214" +HREF="Bv9ARM.ch08.html#AEN4261" >Where Can I Get Help?</A ></DT ></DL @@ -735,14 +735,14 @@ HREF="Bv9ARM.ch09.html" ><DL ><DT >A.1. <A -HREF="Bv9ARM.ch09.html#AEN4230" +HREF="Bv9ARM.ch09.html#AEN4277" >Acknowledgements</A ></DT ><DD ><DL ><DT >A.1.1. <A -HREF="Bv9ARM.ch09.html#AEN4232" +HREF="Bv9ARM.ch09.html#AEN4279" >A Brief History of the <SPAN CLASS="acronym" >DNS</SPAN @@ -772,7 +772,7 @@ HREF="Bv9ARM.ch09.html#classes_of_resource_records" ></DD ><DT >A.3. <A -HREF="Bv9ARM.ch09.html#AEN4271" +HREF="Bv9ARM.ch09.html#AEN4318" >General <SPAN CLASS="acronym" >DNS</SPAN @@ -806,7 +806,7 @@ HREF="Bv9ARM.ch09.html#internet_drafts" ></DT ><DT >A.4.3. <A -HREF="Bv9ARM.ch09.html#AEN4880" +HREF="Bv9ARM.ch09.html#AEN4927" >Other Documents About <SPAN CLASS="acronym" >BIND</SPAN diff --git a/doc/arm/Makefile.in b/doc/arm/Makefile.in index 17bdfaad..dc1aa8c0 100644 --- a/doc/arm/Makefile.in +++ b/doc/arm/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 2001 Internet Software Consortium. +# Copyright (C) 2001, 2002 Internet Software Consortium. # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -13,7 +13,7 @@ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.8 2001/07/26 21:15:48 gson Exp $ +# $Id: Makefile.in,v 1.8.2.2 2002/02/12 06:05:51 marka Exp $ srcdir = @srcdir@ VPATH = @srcdir@ @@ -26,6 +26,7 @@ MANOBJS = Bv9ARM.html distclean:: rm -f validate.sh rm -f nominum-docbook-html.dsl nominum-docbook-print.dsl + rm -f HTML.index HTML.manifest doc man:: ${MANOBJS} diff --git a/doc/misc/dnssec b/doc/misc/dnssec index 4339bcd5..71738624 100644 --- a/doc/misc/dnssec +++ b/doc/misc/dnssec @@ -1,4 +1,4 @@ -Copyright (C) 2000, 2001 Internet Software Consortium. +Copyright (C) 2000-2002 Internet Software Consortium. See COPYRIGHT in the source root or http://isc.org/copyright.html for terms. DNSSEC Release Notes @@ -80,4 +80,12 @@ an update occurs. Advanced access control is possible using the "update-policy" statement in the zone definition. -$Id: dnssec,v 1.14.2.1 2001/09/05 00:56:38 gson Exp $ +Secure Zone Transfers + +BIND 9 does not implement the zone transfer security mechanisms of +RFC2535 section 5.6, and we have no plans to implement them in the +future as we consider them inferior to the use of TSIG or SIG(0) to +ensure the integrity of zone transfers. + + +$Id: dnssec,v 1.14.2.3 2002/02/08 03:57:24 marka Exp $ diff --git a/doc/misc/options b/doc/misc/options index 925e8b42..7d8e2861 100644 --- a/doc/misc/options +++ b/doc/misc/options @@ -43,7 +43,6 @@ options { use-id-pool <boolean>; // obsolete use-ixfr <boolean>; version <quoted_string>; - allow-notify { <address_match_element>; ... }; allow-recursion { <address_match_element>; ... }; allow-v6-synthesis { <address_match_element>; ... }; sortlist { <address_match_element>; ... }; @@ -59,8 +58,6 @@ options { additional-from-cache <boolean>; query-source <querysource4>; query-source-v6 <querysource6>; - notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; - notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; cleaning-interval <integer>; min-roots <integer>; // not implemented lame-ttl <integer>; @@ -73,7 +70,10 @@ options { allow-query { <address_match_element>; ... }; allow-transfer { <address_match_element>; ... }; allow-update-forwarding { <address_match_element>; ... }; + allow-notify { <address_match_element>; ... }; notify <notifytype>; + notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; + notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; also-notify [ port <integer> ] { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... }; dialup <dialuptype>; @@ -143,7 +143,12 @@ view <string> <optional_class> { allow-query { <address_match_element>; ... }; allow-transfer { <address_match_element>; ... }; allow-update-forwarding { <address_match_element>; ... }; + allow-notify { <address_match_element>; ... }; notify <notifytype>; + notify-source ( <ipv4_address> | * ) [ port ( <integer> | * + ) ]; + notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> + | * ) ]; also-notify [ port <integer> ] { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... }; dialup <dialuptype>; @@ -179,7 +184,6 @@ view <string> <optional_class> { }; trusted-keys { <string> <integer> <integer> <integer> <quoted_string>; ... }; - allow-notify { <address_match_element>; ... }; allow-recursion { <address_match_element>; ... }; allow-v6-synthesis { <address_match_element>; ... }; sortlist { <address_match_element>; ... }; @@ -195,8 +199,6 @@ view <string> <optional_class> { additional-from-cache <boolean>; query-source <querysource4>; query-source-v6 <querysource6>; - notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; - notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; cleaning-interval <integer>; min-roots <integer>; // not implemented lame-ttl <integer>; @@ -209,7 +211,10 @@ view <string> <optional_class> { allow-query { <address_match_element>; ... }; allow-transfer { <address_match_element>; ... }; allow-update-forwarding { <address_match_element>; ... }; + allow-notify { <address_match_element>; ... }; notify <notifytype>; + notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; + notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; also-notify [ port <integer> ] { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... }; dialup <dialuptype>; @@ -261,7 +266,10 @@ zone <string> <optional_class> { allow-query { <address_match_element>; ... }; allow-transfer { <address_match_element>; ... }; allow-update-forwarding { <address_match_element>; ... }; + allow-notify { <address_match_element>; ... }; notify <notifytype>; + notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; + notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; also-notify [ port <integer> ] { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... }; dialup <dialuptype>; diff --git a/isc-config.sh.in b/isc-config.sh.in index 84fd0733..84fd0733 100644..100755 --- a/isc-config.sh.in +++ b/isc-config.sh.in diff --git a/lib/Makefile.in b/lib/Makefile.in index a44db424..6ff499d8 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 1998-2001 Internet Software Consortium. +# Copyright (C) 1998-2002 Internet Software Consortium. # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -13,13 +13,17 @@ # NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION # WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -# $Id: Makefile.in,v 1.15 2001/03/27 00:53:21 bwelling Exp $ +# $Id: Makefile.in,v 1.15.2.2 2002/02/12 06:05:52 marka Exp $ srcdir = @srcdir@ VPATH = @srcdir@ top_srcdir = @top_srcdir@ -SUBDIRS = isc isccc isccfg dns lwres tests +# Note: the order of SUBDIRS is important. +# Attempt to disable parallel processing. +.NOTPARALLEL: +.NO_PARALLEL: +SUBDIRS = isc isccc dns isccfg lwres tests TARGETS = @BIND9_MAKE_RULES@ diff --git a/lib/bind/api b/lib/bind/api index 494278e7..06977fcb 100644 --- a/lib/bind/api +++ b/lib/bind/api @@ -1,3 +1,3 @@ LIBINTERFACE = 0 -LIBREVISION = 0 +LIBREVISION = 1 LIBAGE = 0 diff --git a/lib/bind/irs/dns_nw.c b/lib/bind/irs/dns_nw.c index ab93ff5b..43a404ed 100644 --- a/lib/bind/irs/dns_nw.c +++ b/lib/bind/irs/dns_nw.c @@ -16,7 +16,7 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = "$Id: dns_nw.c,v 1.3 2001/04/03 06:42:21 marka Exp $"; +static const char rcsid[] = "$Id: dns_nw.c,v 1.3.2.1 2002/01/22 04:15:44 marka Exp $"; #endif /* LIBC_SCCS and not lint */ /* Imports. */ @@ -56,11 +56,7 @@ static const char rcsid[] = "$Id: dns_nw.c,v 1.3 2001/04/03 06:42:21 marka Exp $ #define MAXALIASES 35 -#if PACKETSZ > 1024 -#define MAXPACKET PACKETSZ -#else -#define MAXPACKET 1024 -#endif +#define MAXPACKET (64*1024) struct pvt { struct nwent net; diff --git a/lib/bind/irs/getaddrinfo.c b/lib/bind/irs/getaddrinfo.c index ba91e832..4dfe7f0d 100644 --- a/lib/bind/irs/getaddrinfo.c +++ b/lib/bind/irs/getaddrinfo.c @@ -172,11 +172,7 @@ static const struct explore explore[] = { #define PTON_MAX 16 -#if PACKETSZ > 1024 -#define MAXPACKET PACKETSZ -#else -#define MAXPACKET 1024 -#endif +#define MAXPACKET (1024*64) typedef union { HEADER hdr; @@ -324,7 +320,7 @@ getaddrinfo(hostname, servname, hints, res) struct addrinfo sentinel; struct addrinfo *cur; int error = 0; - struct addrinfo ai, ai0, *afai; + struct addrinfo ai, ai0, *afai = NULL; struct addrinfo *pai; const struct explore *ex; diff --git a/lib/bind/nameser/ns_samedomain.c b/lib/bind/nameser/ns_samedomain.c index 54735b2b..52489309 100644 --- a/lib/bind/nameser/ns_samedomain.c +++ b/lib/bind/nameser/ns_samedomain.c @@ -16,7 +16,7 @@ */ #ifndef lint -static const char rcsid[] = "$Id: ns_samedomain.c,v 1.1 2001/03/29 06:31:57 marka Exp $"; +static const char rcsid[] = "$Id: ns_samedomain.c,v 1.1.2.1 2001/11/27 23:21:56 gson Exp $"; #endif #include "port_before.h" @@ -125,12 +125,12 @@ ns_samedomain(const char *a, const char *b) { */ escaped = 0; for (i = diff - 2; i >= 0; i--) - if (a[i] == '\\') + if (a[i] == '\\') { if (escaped) escaped = 0; else escaped = 1; - else + } else break; if (escaped) return (0); diff --git a/lib/bind/resolv/res_init.c b/lib/bind/resolv/res_init.c index 6072617e..ae552181 100644 --- a/lib/bind/resolv/res_init.c +++ b/lib/bind/resolv/res_init.c @@ -70,7 +70,7 @@ #if defined(LIBC_SCCS) && !defined(lint) static const char sccsid[] = "@(#)res_init.c 8.1 (Berkeley) 6/7/93"; -static const char rcsid[] = "$Id: res_init.c,v 1.9 2001/07/03 06:55:04 marka Exp $"; +static const char rcsid[] = "$Id: res_init.c,v 1.9.2.1 2002/01/23 02:31:15 gson Exp $"; #endif /* LIBC_SCCS and not lint */ #include "port_before.h" @@ -169,6 +169,9 @@ __res_vinit(res_state statp, int preinit) { statp->id = res_randomid(); } + if ((statp->options & RES_INIT) != 0) + res_ndestroy(statp); + #ifdef USELOOPBACK statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1); #else @@ -187,14 +190,12 @@ __res_vinit(res_state statp, int preinit) { statp->qhook = NULL; statp->rhook = NULL; statp->_u._ext.nscount = 0; - if (statp->_u._ext.ext == NULL) { - statp->_u._ext.ext = malloc(sizeof(*statp->_u._ext.ext)); - if (statp->_u._ext.ext != NULL) { + statp->_u._ext.ext = malloc(sizeof(*statp->_u._ext.ext)); + if (statp->_u._ext.ext != NULL) { memset(statp->_u._ext.ext, 0, sizeof(*statp->_u._ext.ext)); statp->_u._ext.ext->nsaddrs[0].sin = statp->nsaddr; strcpy(statp->_u._ext.ext->nsuffix, "ip6.int"); strcpy(statp->_u._ext.ext->bsuffix, "ip6.arpa"); - } } #ifdef RESOLVSORT statp->nsort = 0; diff --git a/lib/bind/resolv/res_update.c b/lib/bind/resolv/res_update.c index c0784f74..c7cf47af 100644 --- a/lib/bind/resolv/res_update.c +++ b/lib/bind/resolv/res_update.c @@ -1,5 +1,5 @@ #if !defined(lint) && !defined(SABER) -static const char rcsid[] = "$Id: res_update.c,v 1.6 2001/07/03 08:11:51 marka Exp $"; +static const char rcsid[] = "$Id: res_update.c,v 1.6.2.2 2002/02/26 23:13:33 halley Exp $"; #endif /* not lint */ /* @@ -77,8 +77,6 @@ struct zonegrp { /* Forward. */ -static int nscopy(union res_sockaddr_union *, - const union res_sockaddr_union *, int); static void res_dprintf(const char *, ...); /* Macros. */ @@ -102,29 +100,38 @@ res_nupdate(res_state statp, ns_updrec *rrecp_in, ns_tsig_key *key) { /* Thread all of the updates onto a list of groups. */ INIT_LIST(zgrps); + memset(&tgrp, 0, sizeof (tgrp)); for (rrecp = rrecp_in; rrecp; rrecp = LINKED(rrecp, r_link) ? NEXT(rrecp, r_link) : NULL) { - struct in_addr nsaddrs[MAXNS]; - int i; + struct in_addr addrs[MAXNS]; + int i, nscnt; /* XXX need to rewrite res_findzonecut */ for (i = 0; i < MAXNS; i++) { - nsaddrs[i].s_addr = 0; + addrs[i].s_addr = 0; if (tgrp.z_nsaddrs[i].sin.sin_family == AF_INET) - nsaddrs[i] = tgrp.z_nsaddrs[i].sin.sin_addr; + addrs[i] = tgrp.z_nsaddrs[i].sin.sin_addr; } /* Find the origin for it if there is one. */ tgrp.z_class = rrecp->r_class; - tgrp.z_nscount = - res_findzonecut(statp, rrecp->r_dname, tgrp.z_class, - RES_EXHAUSTIVE, - tgrp.z_origin, - sizeof tgrp.z_origin, - nsaddrs, MAXNS); - if (tgrp.z_nscount <= 0) { - DPRINTF(("res_findzonecut failed (%d)", - tgrp.z_nscount)); + nscnt = res_findzonecut(statp, rrecp->r_dname, tgrp.z_class, + RES_EXHAUSTIVE, tgrp.z_origin, + sizeof tgrp.z_origin, addrs, MAXNS); + if (nscnt <= 0) { + DPRINTF(("res_findzonecut failed (%d)", nscnt)); goto done; } + for (i = 0; i < nscnt; i++) { + memset(&tgrp.z_nsaddrs[i], 0, + sizeof(tgrp.z_nsaddrs[i])); + tgrp.z_nsaddrs[i].sin.sin_addr = addrs[i]; + tgrp.z_nsaddrs[i].sin.sin_family = AF_INET; +#ifdef HAVE_SA_LEN + tgrp.z_nsaddrs[i].sin.sin_len = + sizeof(tgrp.z_nsaddrs[i].sin); +#endif + tgrp.z_nsaddrs[i].sin.sin_port = htons(53); + } + tgrp.z_nscount = nscnt; /* Find the group for it if there is one. */ for (zptr = HEAD(zgrps); zptr != NULL; zptr = NEXT(zptr, z_link)) if (ns_samename(tgrp.z_origin, zptr->z_origin) == 1 && @@ -166,9 +173,8 @@ res_nupdate(res_state statp, ns_updrec *rrecp_in, ns_tsig_key *key) { goto done; /* Temporarily replace the resolver's nameserver set. */ - nscount = nscopy(nsaddrs, statp->_u._ext.ext->nsaddrs, statp->nscount); - statp->nscount = nscopy(statp->_u._ext.ext->nsaddrs, - zptr->z_nsaddrs, zptr->z_nscount); + nscount = res_getservers(statp, nsaddrs, MAXNS); + res_setservers(statp, zptr->z_nsaddrs, zptr->z_nscount); /* Send the update and remember the result. */ if (key != NULL) @@ -185,7 +191,7 @@ res_nupdate(res_state statp, ns_updrec *rrecp_in, ns_tsig_key *key) { nzones++; /* Restore resolver's nameserver set. */ - statp->nscount = nscopy(statp->_u._ext.ext->nsaddrs, nsaddrs, nscount); + res_setservers(statp, nsaddrs, nscount); nscount = 0; } done: @@ -197,24 +203,13 @@ res_nupdate(res_state statp, ns_updrec *rrecp_in, ns_tsig_key *key) { free(zptr); } if (nscount != 0) - statp->nscount = nscopy(statp->_u._ext.ext->nsaddrs, nsaddrs, nscount); + res_setservers(statp, nsaddrs, nscount); return (nzones); } /* Private. */ -static int -nscopy(union res_sockaddr_union *dst, const union res_sockaddr_union *src, - int n) -{ - int i; - - for (i = 0; i < n; i++) - dst[i] = src[i]; - return (n); -} - static void res_dprintf(const char *fmt, ...) { va_list ap; diff --git a/lib/dns/api b/lib/dns/api index 9ea5ae0c..c1c50369 100644 --- a/lib/dns/api +++ b/lib/dns/api @@ -1,3 +1,3 @@ -LIBINTERFACE = 5 +LIBINTERFACE = 6 LIBREVISION = 0 -LIBAGE = 0 +LIBAGE = 1 diff --git a/lib/dns/dnssec.c b/lib/dns/dnssec.c index 9daaee19..b84a6984 100644 --- a/lib/dns/dnssec.c +++ b/lib/dns/dnssec.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -16,7 +16,7 @@ */ /* - * $Id: dnssec.c,v 1.69 2001/06/08 22:48:28 bwelling Exp $ + * $Id: dnssec.c,v 1.69.2.2 2002/02/08 03:57:25 marka Exp $ */ @@ -505,7 +505,7 @@ dns_dnssec_findzonekeys(dns_db_t *db, dns_dbversion_t *ver, DST_TYPE_PUBLIC|DST_TYPE_PRIVATE, NULL, mctx, &keys[count]); - if (result == DST_R_INVALIDPRIVATEKEY) + if (result == ISC_R_FILENOTFOUND) goto next; if (result != ISC_R_SUCCESS) goto failure; diff --git a/lib/dns/include/dns/message.h b/lib/dns/include/dns/message.h index 3f3150dc..f9feaa20 100644 --- a/lib/dns/include/dns/message.h +++ b/lib/dns/include/dns/message.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: message.h,v 1.100 2001/08/28 03:58:17 marka Exp $ */ +/* $Id: message.h,v 1.100.2.3 2002/02/19 22:13:00 gson Exp $ */ #ifndef DNS_MESSAGE_H #define DNS_MESSAGE_H 1 @@ -100,6 +100,7 @@ #define DNS_MESSAGEEXTFLAG_DO 0x8000U #define DNS_MESSAGE_REPLYPRESERVE (DNS_MESSAGEFLAG_RD) +#define DNS_MESSAGEEXTFLAG_REPLYPRESERVE (DNS_MESSAGEEXTFLAG_DO) #define DNS_MESSAGE_HEADERLEN 12 /* 6 isc_uint16_t's */ @@ -152,6 +153,8 @@ typedef int dns_messagetextflag_t; occurs */ #define DNS_MESSAGEPARSE_CLONEBUFFER 0x0004 /* save a copy of the source buffer */ +#define DNS_MESSAGEPARSE_IGNORETRUNCATION 0x0008 /* trucation errors are + * not fatal. */ /* * Control behavior of rendering @@ -399,6 +402,9 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, * not be considered FORMERRs. If the entire message can be parsed, it * will be returned and DNS_R_RECOVERABLE will be returned. * + * If DNS_MESSAGEPARSE_IGNORETRUNCATION is set then return as many complete + * RR's as possible, DNS_R_RECOVERABLE will be returned. + * * OPT and TSIG records are always handled specially, regardless of the * 'preserve_order' setting. * diff --git a/lib/dns/include/dns/rdata.h b/lib/dns/include/dns/rdata.h index 66281245..46c18824 100644 --- a/lib/dns/include/dns/rdata.h +++ b/lib/dns/include/dns/rdata.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-2001 Internet Software Consortium. + * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rdata.h,v 1.51 2001/04/30 18:09:30 gson Exp $ */ +/* $Id: rdata.h,v 1.51.2.2 2002/02/20 02:17:25 marka Exp $ */ #ifndef DNS_RDATA_H #define DNS_RDATA_H 1 @@ -161,7 +161,7 @@ dns_rdata_reset(dns_rdata_t *rdata); * Make 'rdata' empty. * * Requires: - * 'rdata' is a previously initaliased rdata and is not linked. + * 'rdata' is a previously initialized rdata and is not linked. */ void @@ -319,6 +319,9 @@ dns_rdata_fromtext(dns_rdata_t *rdata, dns_rdataclass_t rdclass, * 'target' is a valid region. * * 'origin' if non NULL it must be absolute. + * + * 'callbacks' to be NULL or callbacks->warn and callbacks->error be + * initialized. * * Ensures: * If result is success: diff --git a/lib/dns/include/dns/zone.h b/lib/dns/include/dns/zone.h index 6fcb18ef..ec116cd0 100644 --- a/lib/dns/include/dns/zone.h +++ b/lib/dns/include/dns/zone.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zone.h,v 1.106.2.1 2001/11/13 18:57:14 gson Exp $ */ +/* $Id: zone.h,v 1.106.2.4 2002/02/08 03:57:35 marka Exp $ */ #ifndef DNS_ZONE_H #define DNS_ZONE_H 1 @@ -44,6 +44,12 @@ typedef enum { #define DNS_ZONEOPT_CHILDREN 0x00000004U /* perform child checks */ #define DNS_ZONEOPT_NOTIFY 0x00000008U /* perform NOTIFY */ #define DNS_ZONEOPT_MANYERRORS 0x00000010U /* return many errors on load */ +#ifndef NOMINUM_PUBLIC +/* + * Nominum specific options build down. + */ +#define DNS_ZONEOPT_NOTIFYFORWARD 0x80000000U /* forward notify to master */ +#endif /* NOMINUM_PUBLIC */ #ifndef DNS_ZONE_MINREFRESH #define DNS_ZONE_MINREFRESH 300 /* 5 minutes */ @@ -208,7 +214,7 @@ dns_zone_loadnew(dns_zone_t *zone); /* * Cause the database to be loaded from its backing store. * Confirm that the mimimum requirements for the zone type are - * met, otherwise DNS_R_BADZONE is return. + * met, otherwise DNS_R_BADZONE is returned. * * dns_zone_loadnew() only loads zones that are not yet loaded. * dns_zone_load() also loads zones that are already loaded and @@ -415,15 +421,12 @@ dns_zone_setalsonotify(dns_zone_t *zone, isc_sockaddr_t *notify, isc_uint32_t count); /* * Set the list of additional servers to be notified when - * a zone changes. To clear the list use 'notify = NULL' - * and 'count = 0'. + * a zone changes. To clear the list use 'count = 0'. * * Require: * 'zone' to be a valid zone. - * 'notify' to be non NULL. - * 'count' the number of notify. - * - * If 'notify' is NULL then 'count' must be zero. + * 'notify' to be non-NULL if count != 0. + * 'count' to be the number of notifyees * * Returns: * ISC_R_SUCCESS diff --git a/lib/dns/master.c b/lib/dns/master.c index 77914739..ed790216 100644 --- a/lib/dns/master.c +++ b/lib/dns/master.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: master.c,v 1.122.2.2 2001/09/11 23:32:55 gson Exp $ */ +/* $Id: master.c,v 1.122.2.4 2002/02/08 03:57:27 marka Exp $ */ #include <config.h> @@ -370,7 +370,7 @@ loadctx_destroy(dns_loadctx_t *lctx) { incctx_destroy(lctx->mctx, lctx->inc); if (lctx->lex != NULL) { - isc_lex_close(lctx->lex); + /* isc_lex_destroy() will close all open streams */ isc_lex_destroy(&lctx->lex); } if (lctx->task != NULL) diff --git a/lib/dns/message.c b/lib/dns/message.c index 2c499781..58e58c5a 100644 --- a/lib/dns/message.c +++ b/lib/dns/message.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: message.c,v 1.194.2.1 2001/11/15 01:24:07 marka Exp $ */ +/* $Id: message.c,v 1.194.2.8 2002/02/28 05:17:49 marka Exp $ */ /*** *** Imports @@ -23,10 +23,11 @@ #include <config.h> +#include <isc/buffer.h> #include <isc/mem.h> +#include <isc/print.h> #include <isc/string.h> /* Required for HP/UX (and others?) */ #include <isc/util.h> -#include <isc/buffer.h> #include <dns/dnssec.h> #include <dns/keyvalues.h> @@ -115,7 +116,7 @@ static const char *rcodetext[] = { "FORMERR", "SERVFAIL", "NXDOMAIN", - "NOTIMPL", + "NOTIMP", "REFUSED", "YXDOMAIN", "YXRRSET", @@ -1170,7 +1171,10 @@ getsection(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t *dctx, * If there was no question section, we may not yet have * established a class. Do so now. */ - if (msg->state == DNS_SECTION_ANY) { + if (msg->state == DNS_SECTION_ANY && + rdtype != dns_rdatatype_opt && /* class is UDP SIZE */ + rdtype != dns_rdatatype_tsig && /* class is ANY */ + rdtype != dns_rdatatype_tkey) { /* class is undefined */ msg->rdclass = rdclass; msg->state = DNS_SECTION_QUESTION; } @@ -1491,12 +1495,14 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, isc_uint16_t tmpflags; isc_buffer_t origsource; isc_boolean_t seen_problem; + isc_boolean_t ignore_tc; REQUIRE(DNS_MESSAGE_VALID(msg)); REQUIRE(source != NULL); REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTPARSE); seen_problem = ISC_FALSE; + ignore_tc = ISC_TF(options & DNS_MESSAGEPARSE_IGNORETRUNCATION); origsource = *source; @@ -1528,6 +1534,8 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, dns_decompress_setmethods(&dctx, DNS_COMPRESS_GLOBAL14); ret = getquestions(source, msg, &dctx, options); + if (ret == ISC_R_UNEXPECTEDEND && ignore_tc) + goto truncated; if (ret == DNS_R_RECOVERABLE) { seen_problem = ISC_TRUE; ret = ISC_R_SUCCESS; @@ -1537,6 +1545,8 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, msg->question_ok = 1; ret = getsection(source, msg, &dctx, DNS_SECTION_ANSWER, options); + if (ret == ISC_R_UNEXPECTEDEND && ignore_tc) + goto truncated; if (ret == DNS_R_RECOVERABLE) { seen_problem = ISC_TRUE; ret = ISC_R_SUCCESS; @@ -1545,6 +1555,8 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, return (ret); ret = getsection(source, msg, &dctx, DNS_SECTION_AUTHORITY, options); + if (ret == ISC_R_UNEXPECTEDEND && ignore_tc) + goto truncated; if (ret == DNS_R_RECOVERABLE) { seen_problem = ISC_TRUE; ret = ISC_R_SUCCESS; @@ -1553,6 +1565,8 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, return (ret); ret = getsection(source, msg, &dctx, DNS_SECTION_ADDITIONAL, options); + if (ret == ISC_R_UNEXPECTEDEND && ignore_tc) + goto truncated; if (ret == DNS_R_RECOVERABLE) { seen_problem = ISC_TRUE; ret = ISC_R_SUCCESS; @@ -1568,6 +1582,7 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, r.length); } + truncated: if ((options & DNS_MESSAGEPARSE_CLONEBUFFER) == 0) isc_buffer_usedregion(&origsource, &msg->saved); else { @@ -1580,6 +1595,8 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, msg->free_saved = 1; } + if (ret == ISC_R_UNEXPECTEDEND && ignore_tc) + return (DNS_R_RECOVERABLE); if (seen_problem == ISC_TRUE) return (DNS_R_RECOVERABLE); return (ISC_R_SUCCESS); @@ -2763,7 +2780,7 @@ dns_message_checksig(dns_message_t *msg, dns_view_t *view) { dns_rdataset_init(&keyset); if (view == NULL) - return DNS_R_KEYUNAUTHORIZED; + return (DNS_R_KEYUNAUTHORIZED); result = dns_view_simplefind(view, &sig.signer, dns_rdatatype_key, 0, 0, ISC_FALSE, &keyset, NULL); @@ -2890,6 +2907,7 @@ dns_message_pseudosectiontotext(dns_message_t *msg, dns_name_t *name = NULL; isc_result_t result; char buf[sizeof("1234567890")]; + isc_uint32_t mbz; REQUIRE(DNS_MESSAGE_VALID(msg)); REQUIRE(target != NULL); @@ -2903,13 +2921,22 @@ dns_message_pseudosectiontotext(dns_message_t *msg, if ((flags & DNS_MESSAGETEXTFLAG_NOCOMMENTS) == 0) ADD_STRING(target, ";; OPT PSEUDOSECTION:\n"); ADD_STRING(target, "; EDNS: version: "); - sprintf(buf, "%4u", - (unsigned int)((ps->ttl & + snprintf(buf, sizeof(buf), "%u", + (unsigned int)((ps->ttl & 0x00ff0000 >> 16))); ADD_STRING(target, buf); - ADD_STRING(target, ", udp="); - sprintf(buf, "%7u\n", - (unsigned int)ps->rdclass); + ADD_STRING(target, ", flags:"); + if ((ps->ttl & DNS_MESSAGEEXTFLAG_DO) != 0) + ADD_STRING(target, " do"); + mbz = ps->ttl & ~DNS_MESSAGEEXTFLAG_DO & 0xffff; + if (mbz != 0) { + ADD_STRING(target, "; MBZ: "); + snprintf(buf, sizeof(buf), "%.4x ", mbz); + ADD_STRING(target, buf); + ADD_STRING(target, ", udp: "); + } else + ADD_STRING(target, "; udp: "); + snprintf(buf, sizeof(buf), "%u\n", (unsigned int)ps->rdclass); ADD_STRING(target, buf); return (ISC_R_SUCCESS); case DNS_PSEUDOSECTION_TSIG: diff --git a/lib/dns/ncache.c b/lib/dns/ncache.c index 432862a1..841f6d02 100644 --- a/lib/dns/ncache.c +++ b/lib/dns/ncache.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: ncache.c,v 1.24 2001/01/09 21:51:08 bwelling Exp $ */ +/* $Id: ncache.c,v 1.24.2.2 2002/02/08 03:57:29 marka Exp $ */ #include <config.h> @@ -257,7 +257,7 @@ dns_ncache_towire(dns_rdataset_t *rdataset, dns_compress_t *cctx, { dns_rdata_t rdata = DNS_RDATA_INIT; isc_result_t result; - isc_region_t remaining, tremaining; + isc_region_t remaining, tavailable; isc_buffer_t source, savedbuffer, rdlen; dns_name_t name; dns_rdatatype_t type; @@ -323,8 +323,8 @@ dns_ncache_towire(dns_rdataset_t *rdataset, dns_compress_t *cctx, * See if we have space for type, class, ttl, and * rdata length. Write the type, class, and ttl. */ - isc_buffer_remainingregion(target, &tremaining); - if (tremaining.length < 10) { + isc_buffer_availableregion(target, &tavailable); + if (tavailable.length < 10) { result = ISC_R_NOSPACE; goto rollback; } diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c index 8f21b3ff..4760958e 100644 --- a/lib/dns/rdata.c +++ b/lib/dns/rdata.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-2001 Internet Software Consortium. + * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: rdata.c,v 1.147.2.3 2001/10/03 02:07:34 marka Exp $ */ +/* $Id: rdata.c,v 1.147.2.5 2002/02/20 02:17:24 marka Exp $ */ #include <config.h> #include <ctype.h> @@ -191,11 +191,12 @@ getquad(const void *src, struct in_addr *dst, result = inet_aton(src, dst); if (result == 1 && callbacks != NULL && inet_pton(AF_INET, src, &tmp) != 1) { + const char *name = isc_lex_getsourcename(lexer); + if (name == NULL) + name = "UNKNOWN"; (*callbacks->warn)(callbacks, "%s:%lu: warning \"%s\" " - "is not a decimal dotted quad", - isc_lex_getsourcename(lexer), - isc_lex_getsourceline(lexer), - src); + "is not a decimal dotted quad", name, + isc_lex_getsourceline(lexer), src); } return (result); } @@ -674,15 +675,16 @@ dns_rdata_fromtext(dns_rdata_t *rdata, dns_rdataclass_t rdclass, REQUIRE(DNS_RDATA_INITIALIZED(rdata)); REQUIRE(DNS_RDATA_VALIDFLAGS(rdata)); } + if (callbacks != NULL) { + REQUIRE(callbacks->warn != NULL); + REQUIRE(callbacks->error != NULL); + } st = *target; - if (callbacks == NULL) - callback = NULL; - else + if (callbacks != NULL) callback = callbacks->error; - - if (callback == NULL) + else callback = default_fromtext_callback; result = isc_lex_getmastertoken(lexer, &token, isc_tokentype_qstring, @@ -1948,11 +1950,14 @@ default_fromtext_callback(dns_rdatacallbacks_t *callbacks, const char *fmt, static void fromtext_warneof(isc_lex_t *lexer, dns_rdatacallbacks_t *callbacks) { - if (isc_lex_isfile(lexer) && callbacks != NULL) + if (isc_lex_isfile(lexer) && callbacks != NULL) { + const char *name = isc_lex_getsourcename(lexer); + if (name == NULL) + name = "UNKNOWN"; (*callbacks->warn)(callbacks, "%s:%lu: file does not end with newline", - isc_lex_getsourcename(lexer), - isc_lex_getsourceline(lexer)); + name, isc_lex_getsourceline(lexer)); + } } static void diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 780ed1d5..50c0c0da 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: resolver.c,v 1.218.2.7 2001/11/16 21:47:27 bwelling Exp $ */ +/* $Id: resolver.c,v 1.218.2.8 2002/02/26 23:24:18 halley Exp $ */ #include <config.h> @@ -4217,25 +4217,28 @@ resquery_response(isc_task_t *task, isc_event_t *event) { */ if (message->rcode != dns_rcode_noerror && message->rcode != dns_rcode_nxdomain) { - if (message->rcode == dns_rcode_formerr) { - if ((query->options & DNS_FETCHOPT_NOEDNS0) == 0) { - /* - * It's very likely they don't like EDNS0. - * - * XXXRTH We should check if the question - * we're asking requires EDNS0, and - * if so, we should bail out. - */ - options |= DNS_FETCHOPT_NOEDNS0; - resend = ISC_TRUE; - /* - * Remember that they don't like EDNS0. - */ - dns_adb_changeflags(fctx->adb, - query->addrinfo, + if ((message->rcode == dns_rcode_formerr || + message->rcode == dns_rcode_notimp || + message->rcode == dns_rcode_servfail) && + (query->options & DNS_FETCHOPT_NOEDNS0) == 0) { + /* + * It's very likely they don't like EDNS0. + * + * XXXRTH We should check if the question + * we're asking requires EDNS0, and + * if so, we should bail out. + */ + options |= DNS_FETCHOPT_NOEDNS0; + resend = ISC_TRUE; + /* + * Remember that they don't like EDNS0. + */ + if (message->rcode != dns_rcode_servfail) + dns_adb_changeflags(fctx->adb, query->addrinfo, DNS_FETCHOPT_NOEDNS0, DNS_FETCHOPT_NOEDNS0); - } else if (ISFORWARDER(query->addrinfo)) { + } else if (message->rcode == dns_rcode_formerr) { + if (ISFORWARDER(query->addrinfo)) { /* * This forwarder doesn't understand us, * but other forwarders might. Keep trying. diff --git a/lib/dns/sec/dst/dst_api.c b/lib/dns/sec/dst/dst_api.c index 82076d4b..84afc48a 100644 --- a/lib/dns/sec/dst/dst_api.c +++ b/lib/dns/sec/dst/dst_api.c @@ -19,7 +19,7 @@ /* * Principal Author: Brian Wellington - * $Id: dst_api.c,v 1.88.2.1 2001/11/06 19:24:08 gson Exp $ + * $Id: dst_api.c,v 1.88.2.2 2001/12/19 01:09:56 marka Exp $ */ #include <config.h> @@ -900,7 +900,7 @@ write_public_key(const dst_key_t *key, const char *directory) { isc_region_t r; char filename[ISC_DIR_NAMEMAX]; unsigned char key_array[DST_KEY_MAXSIZE]; - char text_array[DST_KEY_MAXSIZE]; + char text_array[DST_KEY_MAXTEXTSIZE]; char class_array[10]; isc_result_t ret; dns_rdata_t rdata = DNS_RDATA_INIT; diff --git a/lib/dns/sec/dst/dst_result.c b/lib/dns/sec/dst/dst_result.c index 706e2a07..4d93cee3 100644 --- a/lib/dns/sec/dst/dst_result.c +++ b/lib/dns/sec/dst/dst_result.c @@ -17,7 +17,7 @@ /* * Principal Author: Brian Wellington - * $Id: dst_result.c,v 1.18 2001/07/10 19:08:28 bwelling Exp $ + * $Id: dst_result.c,v 1.18.2.1 2001/12/19 01:29:29 marka Exp $ */ #include <config.h> @@ -41,7 +41,7 @@ static const char *text[DST_R_NRESULTS] = { "UNUSED9", /* 9 */ "UNUSED10", /* 10 */ "sign failure", /* 11 */ - "UNUSED12", /* 12 */ + "UNUSED12", /* 12 */ "UNUSED13", /* 13 */ "verify failure", /* 14 */ "not a public key", /* 15 */ diff --git a/lib/dns/sec/dst/gssapictx.c b/lib/dns/sec/dst/gssapictx.c index b0a6ae66..76385447 100644 --- a/lib/dns/sec/dst/gssapictx.c +++ b/lib/dns/sec/dst/gssapictx.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: gssapictx.c,v 1.3 2001/01/09 21:55:35 bwelling Exp $ */ +/* $Id: gssapictx.c,v 1.3.2.1 2001/12/19 01:29:32 marka Exp $ */ #include <config.h> @@ -56,13 +56,13 @@ } while (0) #define REGION_TO_GBUFFER(r, gb) \ - do { \ + do { \ (gb).length = (r).length; \ (gb).value = (r).base; \ } while (0) #define GBUFFER_TO_REGION(gb, r) \ - do { \ + do { \ (r).length = (gb).length; \ (r).base = (gb).value; \ } while (0) diff --git a/lib/dns/sec/dst/hmac_link.c b/lib/dns/sec/dst/hmac_link.c index d803cfc6..22b776e5 100644 --- a/lib/dns/sec/dst/hmac_link.c +++ b/lib/dns/sec/dst/hmac_link.c @@ -19,7 +19,7 @@ /* * Principal Author: Brian Wellington - * $Id: hmac_link.c,v 1.53 2001/05/31 18:34:50 tale Exp $ + * $Id: hmac_link.c,v 1.53.2.1 2001/12/19 01:29:33 marka Exp $ */ #include <config.h> @@ -153,7 +153,7 @@ hmacmd5_generate(dst_key_t *key, int pseudorandom_ok) { static isc_boolean_t hmacmd5_isprivate(const dst_key_t *key) { UNUSED(key); - return (ISC_TRUE); + return (ISC_TRUE); } static isc_boolean_t diff --git a/lib/dns/sec/dst/include/dst/dst.h b/lib/dns/sec/dst/include/dst/dst.h index cbb9e531..c411ef8f 100644 --- a/lib/dns/sec/dst/include/dst/dst.h +++ b/lib/dns/sec/dst/include/dst/dst.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dst.h,v 1.42 2001/05/31 18:34:51 tale Exp $ */ +/* $Id: dst.h,v 1.42.2.1 2001/12/19 01:09:58 marka Exp $ */ #ifndef DST_DST_H #define DST_DST_H 1 @@ -52,7 +52,13 @@ typedef struct dst_context dst_context_t; #define DST_MAX_ALGS 255 /* A buffer of this size is large enough to hold any key */ -#define DST_KEY_MAXSIZE 1024 +#define DST_KEY_MAXSIZE 1280 + +/* + * A buffer of this size is large enough to hold the textual representation + * of any key + */ +#define DST_KEY_MAXTEXTSIZE 2048 /* 'Type' for dst_read_key() */ #define DST_TYPE_PRIVATE 0x2000000 diff --git a/lib/dns/sec/dst/openssldh_link.c b/lib/dns/sec/dst/openssldh_link.c index 88e4081e..ea7cb766 100644 --- a/lib/dns/sec/dst/openssldh_link.c +++ b/lib/dns/sec/dst/openssldh_link.c @@ -19,7 +19,7 @@ /* * Principal Author: Brian Wellington - * $Id: openssldh_link.c,v 1.38 2001/07/10 04:01:16 bwelling Exp $ + * $Id: openssldh_link.c,v 1.38.2.2 2001/12/19 01:29:34 marka Exp $ */ #ifdef OPENSSL @@ -28,6 +28,7 @@ #include <ctype.h> +#include <isc/mem.h> #include <isc/string.h> #include <isc/util.h> @@ -167,7 +168,7 @@ openssldh_generate(dst_key_t *key, int generator) { static isc_boolean_t openssldh_isprivate(const dst_key_t *key) { DH *dh = (DH *) key->opaque; - return (ISC_TF(dh != NULL && dh->priv_key != NULL)); + return (ISC_TF(dh != NULL && dh->priv_key != NULL)); } static isc_boolean_t @@ -374,42 +375,60 @@ openssldh_fromdns(dst_key_t *key, isc_buffer_t *data) { static isc_result_t openssldh_tofile(const dst_key_t *key, const char *directory) { - int cnt = 0; + int i; DH *dh; dst_private_t priv; - unsigned char bufs[4][128]; + unsigned char *bufs[4]; + isc_result_t result; if (key->opaque == NULL) return (DST_R_NULLKEY); dh = (DH *) key->opaque; - priv.elements[cnt].tag = TAG_DH_PRIME; - priv.elements[cnt].length = BN_num_bytes(dh->p); - BN_bn2bin(dh->p, bufs[cnt]); - priv.elements[cnt].data = bufs[cnt]; - cnt++; - - priv.elements[cnt].tag = TAG_DH_GENERATOR; - priv.elements[cnt].length = BN_num_bytes(dh->g); - BN_bn2bin(dh->g, bufs[cnt]); - priv.elements[cnt].data = bufs[cnt]; - cnt++; - - priv.elements[cnt].tag = TAG_DH_PRIVATE; - priv.elements[cnt].length = BN_num_bytes(dh->priv_key); - BN_bn2bin(dh->priv_key, bufs[cnt]); - priv.elements[cnt].data = bufs[cnt]; - cnt++; - - priv.elements[cnt].tag = TAG_DH_PUBLIC; - priv.elements[cnt].length = BN_num_bytes(dh->pub_key); - BN_bn2bin(dh->pub_key, bufs[cnt]); - priv.elements[cnt].data = bufs[cnt]; - cnt++; - - priv.nelements = cnt; - return (dst__privstruct_writefile(key, &priv, directory)); + for (i = 0; i < 4; i++) { + bufs[i] = isc_mem_get(key->mctx, BN_num_bytes(dh->p)); + if (bufs[i] == NULL) { + result = ISC_R_NOMEMORY; + goto fail; + } + } + + i = 0; + + priv.elements[i].tag = TAG_DH_PRIME; + priv.elements[i].length = BN_num_bytes(dh->p); + BN_bn2bin(dh->p, bufs[i]); + priv.elements[i].data = bufs[i]; + i++; + + priv.elements[i].tag = TAG_DH_GENERATOR; + priv.elements[i].length = BN_num_bytes(dh->g); + BN_bn2bin(dh->g, bufs[i]); + priv.elements[i].data = bufs[i]; + i++; + + priv.elements[i].tag = TAG_DH_PRIVATE; + priv.elements[i].length = BN_num_bytes(dh->priv_key); + BN_bn2bin(dh->priv_key, bufs[i]); + priv.elements[i].data = bufs[i]; + i++; + + priv.elements[i].tag = TAG_DH_PUBLIC; + priv.elements[i].length = BN_num_bytes(dh->pub_key); + BN_bn2bin(dh->pub_key, bufs[i]); + priv.elements[i].data = bufs[i]; + i++; + + priv.nelements = i; + result = dst__privstruct_writefile(key, &priv, directory); + fail: + for (i = 0; i < 4; i++) { + if (bufs[i] == NULL) + break; + isc_mem_put(key->mctx, bufs[i], BN_num_bytes(dh->p)); + } + return (result); } static isc_result_t @@ -454,7 +473,7 @@ openssldh_fromfile(dst_key_t *key, const char *filename) { case TAG_DH_PUBLIC: dh->pub_key = bn; break; - } + } } dst__privstruct_free(&priv, mctx); diff --git a/lib/dns/sec/dst/openssldsa_link.c b/lib/dns/sec/dst/openssldsa_link.c index d136c928..05f94fb2 100644 --- a/lib/dns/sec/dst/openssldsa_link.c +++ b/lib/dns/sec/dst/openssldsa_link.c @@ -17,7 +17,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: openssldsa_link.c,v 1.4 2001/07/10 04:01:17 bwelling Exp $ */ +/* $Id: openssldsa_link.c,v 1.4.2.1 2001/12/19 01:29:35 marka Exp $ */ #ifdef OPENSSL @@ -203,7 +203,7 @@ openssldsa_generate(dst_key_t *key, int unused) { static isc_boolean_t openssldsa_isprivate(const dst_key_t *key) { DSA *dsa = (DSA *) key->opaque; - return (ISC_TF(dsa != NULL && dsa->priv_key != NULL)); + return (ISC_TF(dsa != NULL && dsa->priv_key != NULL)); } static isc_boolean_t @@ -397,7 +397,7 @@ openssldsa_fromfile(dst_key_t *key, const char *filename) { case TAG_DSA_PUBLIC: dsa->pub_key = bn; break; - } + } } dst__privstruct_free(&priv, mctx); diff --git a/lib/dns/sec/dst/opensslrsa_link.c b/lib/dns/sec/dst/opensslrsa_link.c index dc198913..b13a6c1b 100644 --- a/lib/dns/sec/dst/opensslrsa_link.c +++ b/lib/dns/sec/dst/opensslrsa_link.c @@ -17,7 +17,7 @@ /* * Principal Author: Brian Wellington - * $Id: opensslrsa_link.c,v 1.12.2.1 2001/11/06 20:44:26 gson Exp $ + * $Id: opensslrsa_link.c,v 1.12.2.3 2001/12/19 01:29:31 marka Exp $ */ #ifdef OPENSSL @@ -226,7 +226,7 @@ opensslrsa_generate(dst_key_t *key, int exp) { static isc_boolean_t opensslrsa_isprivate(const dst_key_t *key) { RSA *rsa = (RSA *) key->opaque; - return (ISC_TF(rsa != NULL && rsa->d != NULL)); + return (ISC_TF(rsa != NULL && rsa->d != NULL)); } static isc_boolean_t @@ -408,9 +408,11 @@ opensslrsa_tofile(const dst_key_t *key, const char *directory) { priv.nelements = i; result = dst__privstruct_writefile(key, &priv, directory); fail: - for (i = 0; i < 8; i++) - if (bufs[i] != NULL) - isc_mem_put(key->mctx, bufs[i], BN_num_bytes(rsa->n)); + for (i = 0; i < 8; i++) { + if (bufs[i] == NULL) + break; + isc_mem_put(key->mctx, bufs[i], BN_num_bytes(rsa->n)); + } return (result); } @@ -466,7 +468,7 @@ opensslrsa_fromfile(dst_key_t *key, const char *filename) { case TAG_RSA_COEFFICIENT: rsa->iqmp = bn; break; - } + } } dst__privstruct_free(&priv, mctx); diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 98af14bd..c8afba04 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zone.c,v 1.333.2.5 2001/11/13 18:57:11 gson Exp $ */ +/* $Id: zone.c,v 1.333.2.7 2002/02/08 03:57:31 marka Exp $ */ #include <config.h> @@ -1713,8 +1713,7 @@ dns_zone_setalsonotify(dns_zone_t *zone, isc_sockaddr_t *notify, isc_sockaddr_t *new; REQUIRE(DNS_ZONE_VALID(zone)); - REQUIRE((notify == NULL && count == 0) || - (notify != NULL && count != 0)); + REQUIRE(count == 0 || notify != NULL); LOCK_ZONE(zone); if (zone->notify != NULL) { @@ -1723,19 +1722,16 @@ dns_zone_setalsonotify(dns_zone_t *zone, isc_sockaddr_t *notify, zone->notify = NULL; zone->notifycnt = 0; } - if (notify == NULL) - goto unlock; - - new = isc_mem_get(zone->mctx, count * sizeof *new); - if (new == NULL) { - UNLOCK_ZONE(zone); - return (ISC_R_NOMEMORY); + if (count != 0) { + new = isc_mem_get(zone->mctx, count * sizeof *new); + if (new == NULL) { + UNLOCK_ZONE(zone); + return (ISC_R_NOMEMORY); + } + memcpy(new, notify, count * sizeof *new); + zone->notify = new; + zone->notifycnt = count; } - memcpy(new, notify, count * sizeof *new); - zone->notify = new; - zone->notifycnt = count; - - unlock: UNLOCK_ZONE(zone); return (ISC_R_SUCCESS); } diff --git a/lib/isc/api b/lib/isc/api index 06a9880e..38cabc1d 100644 --- a/lib/isc/api +++ b/lib/isc/api @@ -1,3 +1,3 @@ LIBINTERFACE = 4 -LIBREVISION = 0 +LIBREVISION = 1 LIBAGE = 0 diff --git a/lib/isc/hex.c b/lib/isc/hex.c index 84a608f2..58d04d42 100644 --- a/lib/isc/hex.c +++ b/lib/isc/hex.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: hex.c,v 1.8 2001/03/22 00:07:05 bwelling Exp $ */ +/* $Id: hex.c,v 1.8.2.2 2002/02/08 03:57:36 marka Exp $ */ #include <config.h> @@ -147,6 +147,8 @@ isc_hex_tobuffer(isc_lex_t *lexer, isc_buffer_t *target, int length) { for (i = 0 ;i < tr->length; i++) RETERR(hex_decode_char(&ctx, tr->base[i])); } + if (ctx.length < 0) + isc_lex_ungettoken(lexer, &token); RETERR(hex_decode_finish(&ctx)); return (ISC_R_SUCCESS); } diff --git a/lib/isc/include/isc/lex.h b/lib/isc/include/isc/lex.h index 8205b1e3..6cdd5841 100644 --- a/lib/isc/include/isc/lex.h +++ b/lib/isc/include/isc/lex.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-2001 Internet Software Consortium. + * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: lex.h,v 1.26 2001/07/06 20:34:11 gson Exp $ */ +/* $Id: lex.h,v 1.26.2.2 2002/02/08 03:57:40 marka Exp $ */ #ifndef ISC_LEX_H #define ISC_LEX_H 1 @@ -190,7 +190,7 @@ isc_lex_setcomments(isc_lex_t *lex, unsigned int comments); * Requires: * 'lex' is a valid lexer. * - * 'options' has meaningful values. + * 'comments' has meaningful values. */ void @@ -367,7 +367,7 @@ isc_lex_getsourcename(isc_lex_t *lex); unsigned long isc_lex_getsourceline(isc_lex_t *lex); /* - * Return the input source name. + * Return the input source line number. * * Requires: * 'lex' is a valid lexer. diff --git a/lib/isc/lex.c b/lib/isc/lex.c index 3066a67b..c69a52f2 100644 --- a/lib/isc/lex.c +++ b/lib/isc/lex.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: lex.c,v 1.66.2.2 2001/11/22 01:23:19 marka Exp $ */ +/* $Id: lex.c,v 1.66.2.3 2001/12/13 06:17:34 bwelling Exp $ */ #include <config.h> @@ -392,8 +392,10 @@ isc_lex_gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *tokenp) { source->at_eof) { if ((options & ISC_LEXOPT_DNSMULTILINE) != 0 && - lex->paren_count != 0) + lex->paren_count != 0) { + lex->paren_count = 0; return (ISC_R_UNBALANCED); + } if ((options & ISC_LEXOPT_EOF) != 0) { tokenp->type = isc_tokentype_eof; return (ISC_R_SUCCESS); @@ -504,6 +506,7 @@ isc_lex_gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *tokenp) { lex->last_was_eol = ISC_FALSE; if ((options & ISC_LEXOPT_DNSMULTILINE) != 0 && lex->paren_count != 0) { + lex->paren_count = 0; result = ISC_R_UNBALANCED; goto done; } diff --git a/lib/isc/log.c b/lib/isc/log.c index b96bff6e..708a64c4 100644 --- a/lib/isc/log.c +++ b/lib/isc/log.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1999-2001 Internet Software Consortium. + * Copyright (C) 1999-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: log.c,v 1.70.2.1 2001/09/05 00:38:03 gson Exp $ */ +/* $Id: log.c,v 1.70.2.3 2002/02/08 03:57:38 marka Exp $ */ /* Principal Authors: DCL */ @@ -302,9 +302,12 @@ isc_log_create(isc_mem_t *mctx, isc_log_t **lctxp, isc_logconfig_t **lcfgp) { if (lcfgp != NULL) *lcfgp = lcfg; - } else + } else { + if (lcfg != NULL) + isc_logconfig_destroy(&lcfg); if (lctx != NULL) isc_log_destroy(&lctx); + } return (result); } @@ -980,6 +983,8 @@ isc_log_settag(isc_logconfig_t *lcfg, const char *tag) { REQUIRE(VALID_CONFIG(lcfg)); if (tag != NULL && *tag != '\0') { + if (lcfg->tag != NULL) + isc_mem_free(lcfg->lctx->mctx, lcfg->tag); lcfg->tag = isc_mem_strdup(lcfg->lctx->mctx, tag); if (lcfg->tag == NULL) return (ISC_R_NOMEMORY); diff --git a/lib/isc/mem.c b/lib/isc/mem.c index b60e0ab8..1bd39b1f 100644 --- a/lib/isc/mem.c +++ b/lib/isc/mem.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1997-2001 Internet Software Consortium. + * Copyright (C) 1997-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: mem.c,v 1.98.2.2 2001/10/12 01:17:37 marka Exp $ */ +/* $Id: mem.c,v 1.98.2.4 2002/02/08 03:57:39 marka Exp $ */ #include <config.h> @@ -664,6 +664,8 @@ mem_putstats(isc_mem_t *ctx, void *ptr, size_t size) { static void * default_memalloc(void *arg, size_t size) { UNUSED(arg); + if (size == 0) + size = 1; return (malloc(size)); } diff --git a/lib/isc/unix/errno2result.c b/lib/isc/unix/errno2result.c index e10ee28e..8b0f1c42 100644 --- a/lib/isc/unix/errno2result.c +++ b/lib/isc/unix/errno2result.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,11 +15,13 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: errno2result.c,v 1.8 2001/06/15 22:07:49 gson Exp $ */ +/* $Id: errno2result.c,v 1.8.2.2 2002/02/20 02:17:27 marka Exp $ */ #include <config.h> #include <isc/result.h> +#include <isc/strerror.h> +#include <isc/util.h> #include "errno2result.h" @@ -31,6 +33,8 @@ */ isc_result_t isc__errno2result(int posixerrno) { + char strbuf[ISC_STRERRORSIZE]; + switch (posixerrno) { case ENOTDIR: case ELOOP: @@ -97,6 +101,11 @@ isc__errno2result(int posixerrno) { return (ISC_R_ADDRINUSE); #endif default: + isc__strerror(posixerrno, strbuf, sizeof(strbuf)); + UNEXPECTED_ERROR(__FILE__, __LINE__, + "unable to convert errno " + "to isc_result: %d: %s", + posixerrno, strbuf); /* * XXXDCL would be nice if perhaps this function could * return the system's error string, so the caller diff --git a/lib/isc/unix/ifiter_ioctl.c b/lib/isc/unix/ifiter_ioctl.c index 2c8fddfb..062a7c0c 100644 --- a/lib/isc/unix/ifiter_ioctl.c +++ b/lib/isc/unix/ifiter_ioctl.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: ifiter_ioctl.c,v 1.19.2.1 2001/10/22 23:28:19 gson Exp $ */ +/* $Id: ifiter_ioctl.c,v 1.19.2.2 2001/12/12 00:16:47 marka Exp $ */ /* * Obtain the list of network interfaces using the SIOCGLIFCONF ioctl. @@ -237,6 +237,21 @@ internal_current(isc_interfaceiter_t *iter) { (struct sockaddr *)&lifreq.lifr_addr); /* + * If the interface does not have a address ignore it. + */ + switch (family) { + case AF_INET: + if (iter->current.address.type.in.s_addr == htonl(INADDR_ANY)) + return (ISC_R_IGNORE); + break; + case AF_INET6: + if (memcmp(&iter->current.address.type.in6, &in6addr_any, + sizeof(in6addr_any)) == 0) + return (ISC_R_IGNORE); + break; + } + + /* * Get interface flags. */ diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index e4d282d2..ae499f7d 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1998-2001 Internet Software Consortium. + * Copyright (C) 1998-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: socket.c,v 1.207.2.4 2001/11/10 03:03:44 marka Exp $ */ +/* $Id: socket.c,v 1.207.2.9 2002/02/08 03:57:42 marka Exp $ */ #include <config.h> @@ -353,9 +353,7 @@ wakeup_socket(isc_socketmgr_t *manager, int fd, int msg) { sock = manager->fds[fd]; /* - * If there are no events, or there is an event but we - * have already queued up the internal event on a task's - * queue, clear the bit. Otherwise, set it. + * Set requested bit. */ if (msg == SELECT_POKE_READ) FD_SET(sock->fd, &manager->read_fds); @@ -380,6 +378,16 @@ select_poke(isc_socketmgr_t *mgr, int fd, int msg) { do { cc = write(mgr->pipe_fds[1], buf, sizeof(buf)); +#ifdef ENOSR + /* + * Treat ENOSR as EAGAIN but loop slowly as it is + * unlikely to clear fast. + */ + if (cc < 0 && errno == ENOSR) { + sleep(1); + errno = EAGAIN; + } +#endif } while (cc < 0 && SOFT_ERROR(errno)); if (cc < 0) { @@ -489,10 +497,7 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { UNUSED(msg); UNUSED(dev); -#ifndef ISC_NET_BSD44MSGHDR - return; - -#else /* defined ISC_NET_BSD44MSGHDR */ +#ifdef ISC_NET_BSD44MSGHDR #ifdef MSG_TRUNC if ((msg->msg_flags & MSG_TRUNC) == MSG_TRUNC) @@ -504,12 +509,6 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { dev->attributes |= ISC_SOCKEVENTATTR_CTRUNC; #endif - /* - * Check for multicast. - */ - if (isc_sockaddr_ismulticast(&dev->address)) - dev->attributes |= ISC_SOCKEVENTATTR_MULTICAST; - #ifndef USE_CMSG return; #else @@ -542,6 +541,8 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { ISC_MSG_IFRECEIVED, "interface received on ifindex %u", dev->pktinfo.ipi6_ifindex); + if (IN6_IS_ADDR_MULTICAST(&pktinfop->ipi6_addr)) + dev->attributes |= ISC_SOCKEVENTATTR_MULTICAST; goto next; } #endif @@ -563,7 +564,6 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { #endif /* USE_CMSG */ #endif /* ISC_NET_BSD44MSGHDR */ - } /* @@ -2254,14 +2254,14 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { */ if (isc_thread_create(watcher, manager, &manager->watcher) != ISC_R_SUCCESS) { + close(manager->pipe_fds[0]); + close(manager->pipe_fds[1]); DESTROYLOCK(&manager->lock); isc_mem_put(mctx, manager, sizeof *manager); UNEXPECTED_ERROR(__FILE__, __LINE__, "isc_thread_create() %s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed")); - close(manager->pipe_fds[0]); - close(manager->pipe_fds[1]); return (ISC_R_UNEXPECTED); } #endif /* ISC_PLATFORM_USETHREADS */ diff --git a/lib/isc/win32/errno2result.c b/lib/isc/win32/errno2result.c index 5e1acdb3..9cee47fb 100644 --- a/lib/isc/win32/errno2result.c +++ b/lib/isc/win32/errno2result.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,13 +15,15 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: errno2result.c,v 1.4 2001/07/17 20:29:24 gson Exp $ */ +/* $Id: errno2result.c,v 1.4.2.2 2002/02/20 02:17:28 marka Exp $ */ #include <config.h> #include <winsock2.h> #include "errno2result.h" #include <isc/result.h> +#include <isc/strerror.h> +#include <isc/util.h> /* * Convert a POSIX errno value into an isc_result_t. The @@ -31,6 +33,8 @@ */ isc_result_t isc__errno2result(int posixerrno) { + char strbuf[ISC_STRERRORSIZE]; + switch (posixerrno) { case ENOTDIR: case WSAELOOP: @@ -53,6 +57,11 @@ isc__errno2result(int posixerrno) { case EMFILE: return (ISC_R_TOOMANYOPENFILES); default: + isc__strerror(posixerrno, strbuf, sizeof(strbuf)); + UNEXPECTED_ERROR(__FILE__, __LINE__, + "unable to convert errno " + "to isc_result: %d: %s", + posixerrno, strbuf); /* * XXXDCL would be nice if perhaps this function could * return the system's error string, so the caller diff --git a/lib/isc/win32/include/isc/strerror.h b/lib/isc/win32/include/isc/strerror.h new file mode 100644 index 00000000..662e82c2 --- /dev/null +++ b/lib/isc/win32/include/isc/strerror.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2001 Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM + * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL + * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING + * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, + * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION + * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* $Id: strerror.h,v 1.2.2.1 2002/02/27 07:20:25 marka Exp $ */ + +#ifndef ISC_STRERROR_H +#define ISC_STRERROR_H + +#include <sys/types.h> + +#include <isc/lang.h> + +ISC_LANG_BEGINDECLS + +#define ISC_STRERRORSIZE 128 + +/* + * Provide a thread safe wrapper to strerrror(). + * + * Requires: + * 'buf' to be non NULL. + */ +void +isc__strerror(int num, char *buf, size_t bufsize); + +ISC_LANG_ENDDECLS + +#endif /* ISC_STRERROR_H */ diff --git a/lib/isc/win32/socket.c b/lib/isc/win32/socket.c index 6757d52c..5b690ef6 100644 --- a/lib/isc/win32/socket.c +++ b/lib/isc/win32/socket.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: socket.c,v 1.5.2.1 2001/09/17 22:28:57 gson Exp $ */ +/* $Id: socket.c,v 1.5.2.5 2002/02/19 00:40:09 marka Exp $ */ #define MAKE_EXTERNAL 1 @@ -27,8 +27,6 @@ #define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */ #endif -#include "errno2result.h" - #include <errno.h> #include <stddef.h> #include <stdlib.h> @@ -54,6 +52,10 @@ #include <isc/thread.h> #include <isc/util.h> +#include "errno2result.h" + +#define MAX_SELECT_SECONDS 0 +#define MAX_SELECT_MILLISECONDS 400 /* * Some systems define the socket length argument as an int, some as size_t, * some as socklen_t. This is here so it can be easily changed if needed. @@ -70,9 +72,11 @@ * from recv() but will have errno==0. This is broken, but we have to * work around it here. */ -#define SOFT_ERROR(e) ((e) == EAGAIN || \ +#define SOFT_ERROR(e) ((e) == WSAEINTR || \ (e) == WSAEWOULDBLOCK || \ - (e) == WSAEINTR || \ + (e) == EWOULDBLOCK || \ + (e) == EINTR || \ + (e) == EAGAIN || \ (e) == 0) #define DLVL(x) ISC_LOGCATEGORY_GENERAL, ISC_LOGMODULE_SOCKET, ISC_LOG_DEBUG(x) @@ -98,8 +102,8 @@ typedef isc_event_t intev_t; -#define SOCKET_MAGIC 0x494f696fU /* IOio */ -#define VALID_SOCKET(t) ((t) != NULL && (t)->magic == SOCKET_MAGIC) +#define SOCKET_MAGIC ISC_MAGIC('I', 'O', 'i', 'o') +#define VALID_SOCKET(t) ISC_MAGIC_VALID(t, SOCKET_MAGIC) /* * IPv6 control information. If the socket is an IPv6 socket we want @@ -156,6 +160,11 @@ struct msghdr { int msg_flags; /* flags on received message */ } msghdr; +/* + * The number of times a send operation is repeated if the result is EINTR. + */ +#define NRETRIES 10 + struct isc_socket { /* Not locked. */ unsigned int magic; @@ -197,9 +206,9 @@ struct isc_socket { #endif }; -#define SOCKET_MANAGER_MAGIC 0x494f6d67U /* IOmg */ -#define VALID_MANAGER(m) ((m) != NULL && \ - (m)->magic == SOCKET_MANAGER_MAGIC) +#define SOCKET_MANAGER_MAGIC ISC_MAGIC('I', 'O', 'm', 'g') +#define VALID_MANAGER(m) ISC_MAGIC_VALID(m, SOCKET_MANAGER_MAGIC) + struct isc_socketmgr { /* Not locked. */ unsigned int magic; @@ -209,14 +218,14 @@ struct isc_socketmgr { ISC_LIST(isc_socket_t) socklist; fd_set read_fds; fd_set write_fds; + fd_set except_fds; isc_socket_t *fds[FD_SETSIZE]; int fdstate[FD_SETSIZE]; int maxfd; -#ifdef ISC_PLATFORM_USETHREADS + int minfd; isc_thread_t watcher; isc_condition_t shutdown_ok; int pipe_fds[2]; -#endif /* ISC_PLATFORM_USETHREADS */ }; #define CLOSED 0 /* this one must be zero */ @@ -256,14 +265,35 @@ static void build_msghdr_recv(isc_socket_t *, isc_socketevent_t *, #define SELECT_POKE_READ (-3) #define SELECT_POKE_ACCEPT (-3) /* Same as _READ */ #define SELECT_POKE_WRITE (-4) -#define SELECT_POKE_CONNECT (-4) /* Same as _WRITE */ -#define SELECT_POKE_CLOSE (-5) +#define SELECT_POKE_CONNECT (-5) +#define SELECT_POKE_CLOSE (-6) long bpipe_written = 0; #define SOCK_DEAD(s) ((s)->references == 0) /* + * Routine to handle error messages + */ + +#define ISC_STRERRORSIZE 128 + +void +isc__strerror(int num, char *buf, size_t size) { + char *msg; + unsigned int unum = num; + + REQUIRE(buf != NULL); + + msg = NTstrerror(num); + if (msg != NULL) + snprintf(buf, size, "%s", msg); + else + snprintf(buf, size, "Unknown error: %u", unum); +} + + +/* * The following routines are here to handle Unix emulation until we * can rewrite the the routines in Winsock2 style. */ @@ -300,12 +330,11 @@ internal_pipe(int filedes[2]) { } int -internal_sendmsg(int sock, const struct msghdr *msg, int flags) { - int Error; +internal_sendmsg(int sock, const struct msghdr *msg, int flags, int *merror) { DWORD BytesSent; DWORD Flags = flags; - Error = WSASendTo((SOCKET) sock, + *merror = WSASendTo((SOCKET) sock, msg->msg_iov, msg->msg_iovlen, &BytesSent, @@ -315,29 +344,28 @@ internal_sendmsg(int sock, const struct msghdr *msg, int flags) { NULL, NULL); - if (Error == SOCKET_ERROR) { - BytesSent = -1; - /* There is an error... */ - Error = WSAGetLastError(); - if (Error == WSA_IO_PENDING) { - /* Overlapped send successfully initiated. */ - errno = EAGAIN; - } else { - /* An unexpected error occurred. */ - errno = Error; - } - } - - /* No error -- the I/O request was completed immediately... */ - return (BytesSent); + if (*merror == SOCKET_ERROR) { + BytesSent = -1; + /* There is an error... */ + *merror = WSAGetLastError(); + if (*merror == WSA_IO_PENDING) { + /* Overlapped send successfully initiated. */ + errno = EAGAIN; + } else { + /* An unexpected error occurred. */ + errno = *merror; + } + } + + /* No error -- the I/O request was completed immediately... */ + return (BytesSent); } int -internal_recvmsg(int sock, struct msghdr *msg, int flags) { +internal_recvmsg(int sock, struct msghdr *msg, int flags, int *merror) { DWORD Flags = flags; DWORD NumBytes; int Result; - int Error; Result = WSARecvFrom((SOCKET) sock, msg->msg_iov, @@ -352,10 +380,10 @@ internal_recvmsg(int sock, struct msghdr *msg, int flags) { /* Check for errors. */ if (Result == SOCKET_ERROR) { - Error = WSAGetLastError(); + *merror = WSAGetLastError(); NumBytes = -1; - switch (Error) { + switch (*merror) { case WSAEWOULDBLOCK: /* * No data received; return to wait for another @@ -366,7 +394,7 @@ internal_recvmsg(int sock, struct msghdr *msg, int flags) { default: /* Some other error... hit the panic button. */ - errno = Error; + errno = *merror; break; } } @@ -398,6 +426,11 @@ static void socket_log(isc_socket_t *sock, isc_sockaddr_t *address, isc_logcategory_t *category, isc_logmodule_t *module, int level, isc_msgcat_t *msgcat, int msgset, int message, + const char *fmt, ...) ISC_FORMAT_PRINTF(9, 10); +static void +socket_log(isc_socket_t *sock, isc_sockaddr_t *address, + isc_logcategory_t *category, isc_logmodule_t *module, int level, + isc_msgcat_t *msgcat, int msgset, int message, const char *fmt, ...) { char msgbuf[2048]; @@ -416,7 +449,7 @@ socket_log(isc_socket_t *sock, isc_sockaddr_t *address, msgcat, msgset, message, "socket %p: %s", sock, msgbuf); } else { - isc_sockaddr_format(address, peerbuf, sizeof peerbuf); + isc_sockaddr_format(address, peerbuf, sizeof(peerbuf)); isc_log_iwrite(isc_lctx, category, module, level, msgcat, msgset, message, "socket %p %s: %s", sock, peerbuf, msgbuf); @@ -432,12 +465,14 @@ wakeup_socket(isc_socketmgr_t *manager, int fd, int msg) { * process of being closed, start watching it for either reads * or writes. */ - INSIST(fd < FD_SETSIZE); + + INSIST(fd >= 0 && fd < FD_SETSIZE); if (manager->fdstate[fd] == CLOSE_PENDING) { manager->fdstate[fd] = CLOSED; FD_CLR(fd, &manager->read_fds); FD_CLR(fd, &manager->write_fds); + FD_CLR(fd, &manager->except_fds); closesocket(fd); return; } @@ -455,9 +490,12 @@ wakeup_socket(isc_socketmgr_t *manager, int fd, int msg) { FD_SET(sock->fd, &manager->read_fds); if (msg == SELECT_POKE_WRITE) FD_SET(sock->fd, &manager->write_fds); + if (msg == SELECT_POKE_CONNECT) { /* Need both here */ + FD_SET(sock->fd, &manager->write_fds); + FD_SET(sock->fd, &manager->except_fds); + } } -#ifdef ISC_PLATFORM_USETHREADS /* * Poke the select loop when there is something for us to do. * The write is required (by POSIX) to complete. That is, we @@ -467,7 +505,7 @@ static void select_poke(isc_socketmgr_t *mgr, int fd, int msg) { int cc; int buf[2]; - int errval; + char strbuf[ISC_STRERRORSIZE]; buf[0] = fd; buf[1] = msg; @@ -475,17 +513,17 @@ select_poke(isc_socketmgr_t *mgr, int fd, int msg) { if (msg == SELECT_POKE_SHUTDOWN) { do { cc = _write(mgr->pipe_fds[1], buf, sizeof(buf)); - errval = errno; } while (cc < 0 && SOFT_ERROR(errno)); - if (cc < 0) + if (cc < 0) { + isc__strerror(errno, strbuf, sizeof(strbuf)); FATAL_ERROR(__FILE__, __LINE__, - isc_msgcat_get(isc_msgcat, - ISC_MSGSET_SOCKET, + isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_WRITEFAILED, - "_write() failed " + "write() failed " "during watcher poke: %s"), - strerror(errno)); + strbuf); + } INSIST(cc == sizeof(buf)); @@ -502,6 +540,7 @@ static void select_readmsg(isc_socketmgr_t *mgr, int *fd, int *msg) { int buf[2]; int cc; + char strbuf[ISC_STRERRORSIZE]; cc = _read(mgr->pipe_fds[0], buf, sizeof(buf)); if (cc < 0) { @@ -509,12 +548,14 @@ select_readmsg(isc_socketmgr_t *mgr, int *fd, int *msg) { if (SOFT_ERROR(errno)) return; + isc__strerror(errno, strbuf, sizeof(strbuf)); FATAL_ERROR(__FILE__, __LINE__, isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_READFAILED, - "_read() failed " + "read() failed " "during watcher poke: %s"), - strerror(errno)); + strbuf); + return; } INSIST(cc == sizeof(buf)); @@ -522,20 +563,6 @@ select_readmsg(isc_socketmgr_t *mgr, int *fd, int *msg) { *msg = buf[1]; } -#else /* ISC_PLATFORM_USETHREADS */ -/* - * Update the state of the socketmgr when something changes. - */ -static void -select_poke(isc_socketmgr_t *manager, int fd, int msg) { - if (msg == SELECT_POKE_SHUTDOWN) - return; - else if (fd >= 0) - wakeup_socket(manager, fd, msg); - return; -} -#endif /* ISC_PLATFORM_USETHREADS */ - /* * Make a fd non-blocking. */ @@ -543,14 +570,16 @@ static isc_result_t make_nonblock(int fd) { int ret; unsigned long flags = 1; + char strbuf[ISC_STRERRORSIZE]; /* Set the socket to non-blocking */ ret = ioctlsocket((SOCKET) fd, FIONBIO, &flags); if (ret == -1) { + isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "ioctlsocket(%d, FIOBIO, %d): %s", - fd, flags, strerror(errno)); + fd, flags, strbuf); return (ISC_R_UNEXPECTED); } @@ -598,12 +627,6 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { dev->attributes |= ISC_SOCKEVENTATTR_CTRUNC; #endif - /* - * Check for multicast. - */ - if (isc_sockaddr_ismulticast(&dev->address)) - dev->attributes |= ISC_SOCKEVENTATTR_MULTICAST; - #ifndef USE_CMSG return; #else @@ -636,6 +659,8 @@ process_cmsg(isc_socket_t *sock, struct msghdr *msg, isc_socketevent_t *dev) { ISC_MSG_IFRECEIVED, "interface received on ifindex %u", dev->pktinfo.ipi6_ifindex); + if (IN6_IS_ADDR_MULTICAST(&pktinfop->ipi6_addr)) + dev->attributes |= ISC_SOCKEVENTATTR_MULTICAST; goto next; } #endif @@ -752,7 +777,7 @@ build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev, msg->msg_control = NULL; msg->msg_controllen = 0; msg->msg_flags = 0; -#ifdef USE_CMSG +#if defined(USE_CMSG) && defined(ISC_PLATFORM_HAVEIPV6) if ((sock->type == isc_sockettype_udp) && ((dev->attributes & ISC_SOCKEVENTATTR_PKTINFO) != 0)) { struct cmsghdr *cmsgp; @@ -773,7 +798,7 @@ build_msghdr_send(isc_socket_t *sock, isc_socketevent_t *dev, pktinfop = (struct in6_pktinfo *)CMSG_DATA(cmsgp); memcpy(pktinfop, &dev->pktinfo, sizeof(struct in6_pktinfo)); } -#endif /* USE_CMSG */ +#endif /* USE_CMSG && ISC_PLATFORM_HAVEIPV6 */ #endif /* ISC_NET_BSD44MSGHDR */ if (write_countp != NULL) @@ -833,14 +858,11 @@ build_msghdr_recv(isc_socket_t *sock, isc_socketevent_t *dev, iov[0].buf = (void *)(dev->region.base + dev->n); iov[0].len = read_count; iovcount = 1; - - } - else { - - /* - * Multibuffer I/O. - * Skip empty buffers. - */ + } else { + /* + * Multibuffer I/O. + * Skip empty buffers. + */ while (buffer != NULL) { REQUIRE(ISC_BUFFER_VALID(buffer)); if (isc_buffer_availablelength(buffer) != 0) @@ -968,11 +990,13 @@ doio_recv(isc_socket_t *sock, isc_socketevent_t *dev) { size_t actual_count; struct msghdr msghdr; isc_buffer_t *buffer; + int recv_errno = 0; #if USE_CMSG char cmsg[CMSG_BUF_SIZE]; #else char *cmsg = NULL; #endif + char strbuf[ISC_STRERRORSIZE]; build_msghdr_recv(sock, dev, &msghdr, cmsg, iov, &read_count); @@ -980,22 +1004,23 @@ doio_recv(isc_socket_t *sock, isc_socketevent_t *dev) { dump_msg(&msghdr,sock); #endif - cc = internal_recvmsg(sock->fd, &msghdr, 0); + cc = internal_recvmsg(sock->fd, &msghdr, 0, &recv_errno); if (cc < 0) { - if (SOFT_ERROR(errno)) + if (SOFT_ERROR(recv_errno)) return (DOIO_SOFT); - if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) + if (isc_log_wouldlog(isc_lctx, IOEVENT_LEVEL)) { + isc__strerror(recv_errno, strbuf, sizeof(strbuf)); socket_log(sock, NULL, IOEVENT, isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_DOIORECV, - "doio_recv: internal_recvmsg(%d) %d bytes, " - "err %d/%s", - sock->fd, cc, errno, NTstrerror(errno)); + "doio_recv: recvmsg(%d) %d bytes, err %d/%s", + sock->fd, cc, recv_errno, strbuf); + } #define SOFT_OR_HARD(_system, _isc) \ - if (errno == _system) { \ + if (recv_errno == _system) { \ if (sock->connected) { \ dev->result = _isc; \ return (DOIO_HARD); \ @@ -1003,7 +1028,7 @@ doio_recv(isc_socket_t *sock, isc_socketevent_t *dev) { return (DOIO_SOFT); \ } #define ALWAYS_HARD(_system, _isc) \ - if (errno == _system) { \ + if (recv_errno == _system) { \ dev->result = _isc; \ return (DOIO_HARD); \ } @@ -1020,7 +1045,7 @@ doio_recv(isc_socket_t *sock, isc_socketevent_t *dev) { #undef SOFT_OR_HARD #undef ALWAYS_HARD - dev->result = ISC_R_UNEXPECTED; + dev->result = isc__errno2result(recv_errno); return (DOIO_HARD); } @@ -1120,20 +1145,27 @@ doio_send(isc_socket_t *sock, isc_socketevent_t *dev) { #else char *cmsg = NULL; #endif + int attempts = 0; + int send_errno = 0; + char strbuf[ISC_STRERRORSIZE]; build_msghdr_send(sock, dev, &msghdr, cmsg, iov, &write_count); - cc = internal_sendmsg(sock->fd, &msghdr, 0); +resend: + cc = internal_sendmsg(sock->fd, &msghdr, 0, &send_errno); /* * Check for error or block condition. */ if (cc < 0) { - if (SOFT_ERROR(errno)) + if (send_errno == WSAEINTR && ++attempts < NRETRIES) + goto resend; + + if (SOFT_ERROR(send_errno)) return (DOIO_SOFT); #define SOFT_OR_HARD(_system, _isc) \ - if (errno == _system) { \ + if (send_errno == _system) { \ if (sock->connected) { \ dev->result = _isc; \ return (DOIO_HARD); \ @@ -1141,7 +1173,7 @@ doio_send(isc_socket_t *sock, isc_socketevent_t *dev) { return (DOIO_SOFT); \ } #define ALWAYS_HARD(_system, _isc) \ - if (errno == _system) { \ + if (send_errno == _system) { \ dev->result = _isc; \ return (DOIO_HARD); \ } @@ -1149,6 +1181,7 @@ doio_send(isc_socket_t *sock, isc_socketevent_t *dev) { SOFT_OR_HARD(WSAEACCES, ISC_R_NOPERM); SOFT_OR_HARD(WSAEAFNOSUPPORT, ISC_R_ADDRNOTAVAIL); SOFT_OR_HARD(WSAECONNREFUSED, ISC_R_CONNREFUSED); + SOFT_OR_HARD(WSAENOTCONN, ISC_R_CONNREFUSED); SOFT_OR_HARD(WSAECONNRESET, ISC_R_CONNECTIONRESET); SOFT_OR_HARD(WSAENETRESET, ISC_R_CONNECTIONRESET); SOFT_OR_HARD(WSAEDISCON, ISC_R_CONNECTIONRESET); @@ -1174,10 +1207,10 @@ doio_send(isc_socket_t *sock, isc_socketevent_t *dev) { * a status. */ isc_sockaddr_format(&dev->address, addrbuf, sizeof(addrbuf)); - UNEXPECTED_ERROR(__FILE__, __LINE__, - "internal_send: %s: %s", - addrbuf, strerror(errno)); - dev->result = ISC_R_UNEXPECTED; + isc__strerror(send_errno, strbuf, sizeof(strbuf)); + UNEXPECTED_ERROR(__FILE__, __LINE__, "internal_send: %s: %s", + addrbuf, strbuf); + dev->result = isc__errno2result(send_errno); return (DOIO_HARD); } @@ -1220,6 +1253,7 @@ destroy(isc_socket_t **sockp) { INSIST(ISC_LIST_EMPTY(sock->recv_list)); INSIST(ISC_LIST_EMPTY(sock->send_list)); INSIST(sock->connect_ev == NULL); + REQUIRE(sock->fd >= 0 && sock->fd < FD_SETSIZE); LOCK(&manager->lock); @@ -1253,7 +1287,7 @@ allocate_socket(isc_socketmgr_t *manager, isc_sockettype_t type, isc_socket_t *sock; isc_result_t ret; - sock = isc_mem_get(manager->mctx, sizeof *sock); + sock = isc_mem_get(manager->mctx, sizeof(*sock)); if (sock == NULL) return (ISC_R_NOMEMORY); @@ -1343,7 +1377,7 @@ free_socket(isc_socket_t **socketp) { DESTROYLOCK(&sock->lock); - isc_mem_put(sock->manager->mctx, sock, sizeof *sock); + isc_mem_put(sock->manager->mctx, sock, sizeof(*sock)); *socketp = NULL; } @@ -1356,13 +1390,14 @@ free_socket(isc_socket_t **socketp) { */ isc_result_t isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, - isc_socket_t **socketp) -{ + isc_socket_t **socketp) { isc_socket_t *sock = NULL; isc_result_t ret; #if defined(USE_CMSG) || defined(SO_BSDCOMPAT) int on = 1; #endif + int socket_errno = 0; + char strbuf[ISC_STRERRORSIZE]; REQUIRE(VALID_MANAGER(manager)); REQUIRE(socketp != NULL && *socketp == NULL); @@ -1380,28 +1415,41 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, sock->fd = socket(pf, SOCK_STREAM, IPPROTO_TCP); break; } + + if (sock->fd >= FD_SETSIZE) { + (void)closesocket(sock->fd); + isc_log_iwrite(isc_lctx, ISC_LOGCATEGORY_GENERAL, + ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR, + isc_msgcat, ISC_MSGSET_SOCKET, + ISC_MSG_TOOMANYFDS, + "%s: too many open file descriptors", "socket"); + free_socket(&sock); + return (ISC_R_NORESOURCES); + } + if (sock->fd < 0) { + socket_errno = WSAGetLastError(); free_socket(&sock); - switch (errno) { - case EMFILE: - case ENFILE: - case ENOBUFS: + switch (socket_errno) { + case WSAEMFILE: + case WSAENOBUFS: return (ISC_R_NORESOURCES); - case EPROTONOSUPPORT: - case EPFNOSUPPORT: - case EAFNOSUPPORT: + case WSAEPROTONOSUPPORT: + case WSAEPFNOSUPPORT: + case WSAEAFNOSUPPORT: return (ISC_R_FAMILYNOSUPPORT); default: + isc__strerror(socket_errno, strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "socket() %s: %s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed"), - strerror(errno)); + strbuf); return (ISC_R_UNEXPECTED); } } @@ -1413,13 +1461,15 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, #ifdef SO_BSDCOMPAT if (setsockopt(sock->fd, SOL_SOCKET, SO_BSDCOMPAT, - (void *)&on, sizeof on) < 0) { + (void *)&on, sizeof(on)) < 0) { + socket_errno = WSAGetLastError(); + isc__strerror(socket_errno, strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "setsockopt(%d, SO_BSDCOMPAT) %s: %s", sock->fd, isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed"), - strerror(errno)); + strbuf); /* Press on... */ } #endif @@ -1429,8 +1479,9 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, #if defined(SO_TIMESTAMP) if (setsockopt(sock->fd, SOL_SOCKET, SO_TIMESTAMP, - (void *)&on, sizeof on) < 0 - && errno != ENOPROTOOPT) { + (void *)&on, sizeof(on)) < 0 + && WSAGetLastError() != WSAENOPROTOOPT) { + isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "setsockopt(%d, SO_TIMESTAMP) %s: %s", sock->fd, @@ -1438,7 +1489,7 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed"), - strerror(errno)); + strbuf); /* Press on... */ } #endif /* SO_TIMESTAMP */ @@ -1449,6 +1500,7 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, if ((pf == AF_INET6) && (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, (void *)&on, sizeof (on)) < 0)) { + isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "setsockopt(%d, IPV6_RECVPKTINFO) " "%s: %s", sock->fd, @@ -1456,13 +1508,14 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed"), - strerror(errno)); + strbuf); } #else /* 2292 */ if ((pf == AF_INET6) && (setsockopt(sock->fd, IPPROTO_IPV6, IPV6_PKTINFO, (void *)&on, sizeof (on)) < 0)) { + isc__strerror(WSAGetLaastError(), strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "setsockopt(%d, IPV6_PKTINFO) %s: %s", sock->fd, @@ -1470,7 +1523,7 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed"), - strerror(errno)); + strbuf); } #endif /* IPV6_RECVPKTINFO */ #ifdef IPV6_USE_MIN_MTU /*2292bis, not too common yet*/ @@ -1501,11 +1554,12 @@ isc_socket_create(isc_socketmgr_t *manager, int pf, isc_sockettype_t type, ISC_LIST_APPEND(manager->socklist, sock, link); if (manager->maxfd < sock->fd) manager->maxfd = sock->fd; + manager->minfd = min(manager->minfd, sock->fd); UNLOCK(&manager->lock); socket_log(sock, NULL, CREATION, isc_msgcat, ISC_MSGSET_SOCKET, - ISC_MSG_CREATED, "created"); + ISC_MSG_CREATED, "created %u", sock->fd); return (ISC_R_SUCCESS); } @@ -1730,6 +1784,8 @@ internal_accept(isc_task_t *me, isc_event_t *ev) { ISC_SOCKADDR_LEN_T addrlen; int fd; isc_result_t result = ISC_R_SUCCESS; + int accept_errno = 0; + char strbuf[ISC_STRERRORSIZE]; UNUSED(me); @@ -1771,21 +1827,23 @@ internal_accept(isc_task_t *me, isc_event_t *ev) { * EAGAIN or EINTR, simply poke the watcher to watch this socket * again. */ - addrlen = sizeof dev->newsocket->address.type; + addrlen = sizeof(dev->newsocket->address.type); memset(&dev->newsocket->address.type.sa, 0, addrlen); fd = accept(sock->fd, &dev->newsocket->address.type.sa, (void *)&addrlen); if (fd < 0) { - if (SOFT_ERROR(errno)) { + accept_errno = WSAGetLastError(); + if (SOFT_ERROR(accept_errno) || accept_errno == WSAECONNRESET) { goto soft_error; } else { + isc__strerror(accept_errno, strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "internal_accept: accept() %s: %s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed"), - strerror(errno)); + strbuf); fd = -1; result = ISC_R_UNEXPECTED; } @@ -1810,6 +1868,15 @@ internal_accept(isc_task_t *me, isc_event_t *ev) { sock->pf); (void)closesocket(fd); goto soft_error; + } else if (fd >= FD_SETSIZE) { + isc_log_iwrite(isc_lctx, ISC_LOGCATEGORY_GENERAL, + ISC_LOGMODULE_SOCKET, ISC_LOG_ERROR, + isc_msgcat, ISC_MSGSET_SOCKET, + ISC_MSG_TOOMANYFDS, + "%s: too many open file descriptors", + "accept"); + (void)closesocket(fd); + goto soft_error; } } @@ -1837,13 +1904,13 @@ internal_accept(isc_task_t *me, isc_event_t *ev) { result = ISC_R_UNEXPECTED; } - LOCK(&manager->lock); - ISC_LIST_APPEND(manager->socklist, dev->newsocket, link); - /* * -1 means the new socket didn't happen. */ if (fd != -1) { + LOCK(&manager->lock); + ISC_LIST_APPEND(manager->socklist, dev->newsocket, link); + dev->newsocket->fd = fd; dev->newsocket->bound = 1; dev->newsocket->connected = 1; @@ -1857,14 +1924,18 @@ internal_accept(isc_task_t *me, isc_event_t *ev) { manager->fdstate[fd] = MANAGED; if (manager->maxfd < fd) manager->maxfd = fd; + manager->minfd = min(manager->minfd, sock->fd); socket_log(sock, &dev->newsocket->address, CREATION, isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_ACCEPTEDCXN, "accepted connection, new socket %p", dev->newsocket); - } UNLOCK(&manager->lock); + } else { + dev->newsocket->references--; + free_socket(&dev->newsocket); + } /* * Fill in the done event details and send it off. @@ -1895,7 +1966,7 @@ internal_recv(isc_task_t *me, isc_event_t *ev) { LOCK(&sock->lock); socket_log(sock, NULL, IOEVENT, isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_INTERNALRECV, - "internal_recv: task %p got event %p", me, ev, sock); + "internal_recv: task %p got event %p", me, ev); INSIST(sock->pending_recv == 1); sock->pending_recv = 0; @@ -1963,7 +2034,7 @@ internal_send(isc_task_t *me, isc_event_t *ev) { LOCK(&sock->lock); socket_log(sock, NULL, IOEVENT, isc_msgcat, ISC_MSGSET_SOCKET, ISC_MSG_INTERNALSEND, - "internal_send: task %p got event %p", me, ev, sock); + "internal_send: task %p got event %p", me, ev); INSIST(sock->pending_send == 1); sock->pending_send = 0; @@ -2003,22 +2074,26 @@ internal_send(isc_task_t *me, isc_event_t *ev) { } static void -process_fds(isc_socketmgr_t *manager, int maxfd, - fd_set *readfds, fd_set *writefds) +process_fds(isc_socketmgr_t *manager, int maxfd, int minfd, + fd_set *readfds, fd_set *writefds, fd_set *exceptfds) { int i; isc_socket_t *sock; isc_boolean_t unlock_sock; + BOOL conn_check = FALSE; + + REQUIRE(maxfd <= FD_SETSIZE); /* * Process read/writes on other fds here. Avoid locking * and unlocking twice if both reads and writes are possible. */ - for (i = 0 ; i < maxfd ; i++) { + for (i = minfd ; i <= maxfd ; i++) { if (manager->fdstate[i] == CLOSE_PENDING) { manager->fdstate[i] = CLOSED; FD_CLR(i, &manager->read_fds); FD_CLR(i, &manager->write_fds); + FD_CLR(i, &manager->except_fds); closesocket(i); @@ -2053,13 +2128,35 @@ process_fds(isc_socketmgr_t *manager, int maxfd, LOCK(&sock->lock); } if (!SOCK_DEAD(sock)) { - if (sock->connecting) + if (sock->connecting) { dispatch_connect(sock); + conn_check = TRUE; + } else dispatch_send(sock); } FD_CLR(i, &manager->write_fds); + FD_CLR(i, &manager->except_fds); } + if (FD_ISSET(i, exceptfds)) { + if (sock == NULL) { + FD_CLR(i, &manager->except_fds); + continue; + } + if (!unlock_sock) { + unlock_sock = ISC_TRUE; + LOCK(&sock->lock); + } + if (!SOCK_DEAD(sock)) { + if (sock->connecting) { + dispatch_connect(sock); + conn_check = TRUE; + } + } + FD_CLR(i, &manager->write_fds); + FD_CLR(i, &manager->except_fds); + } + if (unlock_sock) UNLOCK(&sock->lock); } @@ -2081,13 +2178,17 @@ watcher(void *uap) { int cc; fd_set readfds; fd_set writefds; + fd_set exceptfds; int msg, fd; int maxfd; + int minfd; + int watcher_errno = 0; + char strbuf[ISC_STRERRORSIZE]; - /* 30 Second timeout on select in case it's necesasary */ + /* Timeout on select in case it's necesasary */ struct timeval tv; - tv.tv_sec = 2; - tv.tv_usec = 0; + tv.tv_sec = MAX_SELECT_SECONDS; + tv.tv_usec = MAX_SELECT_MILLISECONDS; /* * Get the control fd here. This will never change. @@ -2100,20 +2201,39 @@ watcher(void *uap) { do { readfds = manager->read_fds; writefds = manager->write_fds; - maxfd = manager->maxfd + 1; + exceptfds = manager->except_fds; + maxfd = manager->maxfd; /* Pipe not included */ + minfd = manager->minfd; + watcher_errno = 0; UNLOCK(&manager->lock); - cc = select(maxfd, &readfds, &writefds, NULL, &tv); - if (cc < 0) { - if (!SOFT_ERROR(errno)) - FATAL_ERROR(__FILE__, __LINE__, + if(maxfd > 0) { + cc = select(maxfd, &readfds, &writefds, + &exceptfds, &tv); + if (cc < 0 && bpipe_written <= 0) { + watcher_errno = WSAGetLastError(); + if (!SOFT_ERROR(watcher_errno) && + watcher_errno != WSAEINVAL) { + isc__strerror(watcher_errno, + strbuf, sizeof(strbuf)); + FATAL_ERROR(__FILE__, __LINE__, "select() %s: %s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed"), - strerror(errno)); + strbuf); + } + } + + } else { + /* + * Nothing to select on yet, so sleep + * and check again for work + */ + Sleep(MAX_SELECT_SECONDS*1000 + + MAX_SELECT_MILLISECONDS); } LOCK(&manager->lock); @@ -2152,7 +2272,7 @@ watcher(void *uap) { break; } } - process_fds(manager, maxfd, &readfds, &writefds); + process_fds(manager, maxfd, minfd, &readfds, &writefds, &exceptfds); } manager_log(manager, TRACE, @@ -2170,6 +2290,9 @@ watcher(void *uap) { isc_result_t isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { isc_socketmgr_t *manager; +#ifdef ISC_PLATFORM_USETHREADS + char strbuf[ISC_STRERRORSIZE]; +#endif REQUIRE(managerp != NULL && *managerp == NULL); @@ -2181,7 +2304,7 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { } #endif /* ISC_PLATFORM_USETHREADS */ - manager = isc_mem_get(mctx, sizeof *manager); + manager = isc_mem_get(mctx, sizeof(*manager)); if (manager == NULL) return (ISC_R_NOMEMORY); @@ -2190,7 +2313,7 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { memset(manager->fds, 0, sizeof(manager->fds)); ISC_LIST_INIT(manager->socklist); if (isc_mutex_init(&manager->lock) != ISC_R_SUCCESS) { - isc_mem_put(mctx, manager, sizeof *manager); + isc_mem_put(mctx, manager, sizeof(*manager)); UNEXPECTED_ERROR(__FILE__, __LINE__, "isc_mutex_init() %s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, @@ -2199,7 +2322,7 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { } if (isc_condition_init(&manager->shutdown_ok) != ISC_R_SUCCESS) { DESTROYLOCK(&manager->lock); - isc_mem_put(mctx, manager, sizeof *manager); + isc_mem_put(mctx, manager, sizeof(*manager)); UNEXPECTED_ERROR(__FILE__, __LINE__, "isc_condition_init() %s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, @@ -2213,12 +2336,13 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { */ if (internal_pipe(manager->pipe_fds) != 0) { DESTROYLOCK(&manager->lock); - isc_mem_put(mctx, manager, sizeof *manager); + isc_mem_put(mctx, manager, sizeof(*manager)); + isc__strerror(errno, strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "pipe() %s: %s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, ISC_MSG_FAILED, "failed"), - strerror(errno)); + strbuf); return (ISC_R_UNEXPECTED); } @@ -2229,7 +2353,9 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { */ FD_ZERO(&manager->read_fds); FD_ZERO(&manager->write_fds); + FD_ZERO(&manager->except_fds); manager->maxfd = 0; + manager->minfd = FD_SETSIZE; memset(manager->fdstate, 0, sizeof(manager->fdstate)); /* @@ -2238,7 +2364,7 @@ isc_socketmgr_create(isc_mem_t *mctx, isc_socketmgr_t **managerp) { if (isc_thread_create(watcher, manager, &manager->watcher) != ISC_R_SUCCESS) { DESTROYLOCK(&manager->lock); - isc_mem_put(mctx, manager, sizeof *manager); + isc_mem_put(mctx, manager, sizeof(*manager)); UNEXPECTED_ERROR(__FILE__, __LINE__, "isc_thread_create() %s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, @@ -2338,7 +2464,7 @@ isc_socketmgr_destroy(isc_socketmgr_t **managerp) { DESTROYLOCK(&manager->lock); manager->magic = 0; mctx= manager->mctx; - isc_mem_put(mctx, manager, sizeof *manager); + isc_mem_put(mctx, manager, sizeof(*manager)); isc_mem_detach(&mctx); @@ -2565,8 +2691,9 @@ socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task, case DOIO_SOFT: /* * We couldn't send all or part of the request right now, so - * queue it. + * queue it unless ISC_SOCKFLAG_NORETRY is set. */ + if ((flags & ISC_SOCKFLAG_NORETRY) == 0) { isc_task_attach(task, &ntask); dev->attributes |= ISC_SOCKEVENTATTR_ATTACHED; @@ -2591,6 +2718,7 @@ socket_send(isc_socket_t *sock, isc_socketevent_t *dev, isc_task_t *task, if ((flags & ISC_SOCKFLAG_IMMEDIATE) != 0) result = ISC_R_INPROGRESS; break; + } case DOIO_HARD: case DOIO_SUCCESS: @@ -2698,6 +2826,9 @@ isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region, isc_sockaddr_t *address, struct in6_pktinfo *pktinfo, isc_socketevent_t *event, unsigned int flags) { + REQUIRE((flags & ~(ISC_SOCKFLAG_IMMEDIATE|ISC_SOCKFLAG_NORETRY)) == 0); + if ((flags & ISC_SOCKFLAG_NORETRY) != 0) + REQUIRE(sock->type == isc_sockettype_udp); event->ev_sender = sock; event->result = ISC_R_UNEXPECTED; ISC_LIST_INIT(event->bufferlist); @@ -2711,6 +2842,8 @@ isc_socket_sendto2(isc_socket_t *sock, isc_region_t *region, isc_result_t isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr) { + int bind_errno = 0; + char strbuf[ISC_STRERRORSIZE]; int on = 1; LOCK(&sock->lock); @@ -2722,7 +2855,7 @@ isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr) { return (ISC_R_FAMILYMISMATCH); } if (setsockopt(sock->fd, SOL_SOCKET, SO_REUSEADDR, (void *)&on, - sizeof on) < 0) { + sizeof(on)) < 0) { UNEXPECTED_ERROR(__FILE__, __LINE__, "setsockopt(%d) %s", sock->fd, isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL, @@ -2730,19 +2863,21 @@ isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr) { /* Press on... */ } if (bind(sock->fd, &sockaddr->type.sa, sockaddr->length) < 0) { + bind_errno = WSAGetLastError(); UNLOCK(&sock->lock); - switch (errno) { - case EACCES: + switch (bind_errno) { + case WSAEACCES: return (ISC_R_NOPERM); - case EADDRNOTAVAIL: + case WSAEADDRNOTAVAIL: return (ISC_R_ADDRNOTAVAIL); - case EADDRINUSE: + case WSAEADDRINUSE: return (ISC_R_ADDRINUSE); - case EINVAL: + case WSAEINVAL: return (ISC_R_BOUND); default: - UNEXPECTED_ERROR(__FILE__, __LINE__, - "bind: %s", strerror(errno)); + isc__strerror(bind_errno, strbuf, sizeof(strbuf)); + UNEXPECTED_ERROR(__FILE__, __LINE__, "bind: %s", + strbuf); return (ISC_R_UNEXPECTED); } } @@ -2767,6 +2902,8 @@ isc_socket_bind(isc_socket_t *sock, isc_sockaddr_t *sockaddr) { */ isc_result_t isc_socket_listen(isc_socket_t *sock, unsigned int backlog) { + char strbuf[ISC_STRERRORSIZE]; + REQUIRE(VALID_SOCKET(sock)); LOCK(&sock->lock); @@ -2780,8 +2917,9 @@ isc_socket_listen(isc_socket_t *sock, unsigned int backlog) { if (listen(sock->fd, (int)backlog) < 0) { UNLOCK(&sock->lock); - UNEXPECTED_ERROR(__FILE__, __LINE__, "listen: %s", - strerror(errno)); + isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf)); + + UNEXPECTED_ERROR(__FILE__, __LINE__, "listen: %s", strbuf); return (ISC_R_UNEXPECTED); } @@ -2869,6 +3007,8 @@ isc_socket_connect(isc_socket_t *sock, isc_sockaddr_t *addr, isc_task_t *ntask = NULL; isc_socketmgr_t *manager; int cc; + int errval; + char strbuf[ISC_STRERRORSIZE]; REQUIRE(VALID_SOCKET(sock)); REQUIRE(addr != NULL); @@ -2903,10 +3043,11 @@ isc_socket_connect(isc_socket_t *sock, isc_sockaddr_t *addr, sock->address = *addr; cc = connect(sock->fd, &addr->type.sa, addr->length); if (cc < 0) { - if (SOFT_ERROR(errno) || errno == EINPROGRESS) + errval = WSAGetLastError(); + if (SOFT_ERROR(errval) || errval == WSAEINPROGRESS) goto queue; - switch (errno) { + switch (errval) { #define ERROR_MATCH(a, b) case a: dev->result = b; goto err_exit; ERROR_MATCH(WSAEACCES, ISC_R_NOPERM); ERROR_MATCH(WSAEADDRNOTAVAIL, ISC_R_ADDRNOTAVAIL); @@ -2918,13 +3059,14 @@ isc_socket_connect(isc_socket_t *sock, isc_sockaddr_t *addr, ERROR_MATCH(WSAENOBUFS, ISC_R_NORESOURCES); ERROR_MATCH(EPERM, ISC_R_HOSTUNREACH); ERROR_MATCH(EPIPE, ISC_R_NOTCONNECTED); + ERROR_MATCH(WSAECONNRESET, ISC_R_CONNECTIONRESET); #undef ERROR_MATCH } sock->connected = 0; - UNEXPECTED_ERROR(__FILE__, __LINE__, "%d/%s", - errno, strerror(errno)); + isc__strerror(errval, strbuf, sizeof(strbuf)); + UNEXPECTED_ERROR(__FILE__, __LINE__, "%d/%s", errval, strbuf); UNLOCK(&sock->lock); isc_event_free((isc_event_t **)&dev); @@ -2986,6 +3128,8 @@ internal_connect(isc_task_t *me, isc_event_t *ev) { isc_task_t *task; int cc; ISC_SOCKADDR_LEN_T optlen; + int connect_errno = 0; + char strbuf[ISC_STRERRORSIZE]; UNUSED(me); INSIST(ev->ev_type == ISC_SOCKEVENT_INTW); @@ -3026,16 +3170,14 @@ internal_connect(isc_task_t *me, isc_event_t *ev) { optlen = sizeof(cc); if (getsockopt(sock->fd, SOL_SOCKET, SO_ERROR, (void *)&cc, (void *)&optlen) < 0) - cc = errno; - else - errno = cc; + connect_errno = WSAGetLastError(); - if (errno != 0) { + if (connect_errno != 0) { /* - * If the error is EAGAIN, just re-select on this + * If the error is WSAEAGAIN, just re-select on this * fd and pretend nothing strange happened. */ - if (SOFT_ERROR(errno) || errno == EINPROGRESS) { + if (SOFT_ERROR(connect_errno) || connect_errno == WSAEINPROGRESS) { sock->connecting = 1; select_poke(sock->manager, sock->fd, SELECT_POKE_CONNECT); @@ -3047,7 +3189,7 @@ internal_connect(isc_task_t *me, isc_event_t *ev) { /* * Translate other errors into ISC_R_* flavors. */ - switch (errno) { + switch (connect_errno) { #define ERROR_MATCH(a, b) case a: dev->result = b; break; ERROR_MATCH(WSAEACCES, ISC_R_NOPERM); ERROR_MATCH(WSAEADDRNOTAVAIL, ISC_R_ADDRNOTAVAIL); @@ -3060,12 +3202,14 @@ internal_connect(isc_task_t *me, isc_event_t *ev) { ERROR_MATCH(EPERM, ISC_R_HOSTUNREACH); ERROR_MATCH(EPIPE, ISC_R_NOTCONNECTED); ERROR_MATCH(WSAETIMEDOUT, ISC_R_TIMEDOUT); + ERROR_MATCH(WSAECONNRESET, ISC_R_CONNECTIONRESET); #undef ERROR_MATCH default: dev->result = ISC_R_UNEXPECTED; + isc__strerror(connect_errno, strbuf, sizeof(strbuf)); UNEXPECTED_ERROR(__FILE__, __LINE__, "internal_connect: connect() %s", - strerror(errno)); + strbuf); } } else { dev->result = ISC_R_SUCCESS; @@ -3107,6 +3251,7 @@ isc_result_t isc_socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) { ISC_SOCKADDR_LEN_T len; isc_result_t ret; + char strbuf[ISC_STRERRORSIZE]; REQUIRE(VALID_SOCKET(sock)); REQUIRE(addressp != NULL); @@ -3120,10 +3265,11 @@ isc_socket_getsockname(isc_socket_t *sock, isc_sockaddr_t *addressp) { ret = ISC_R_SUCCESS; - len = sizeof addressp->type; + len = sizeof(addressp->type); if (getsockname(sock->fd, &addressp->type.sa, (void *)&len) < 0) { - UNEXPECTED_ERROR(__FILE__, __LINE__, - "getsockname: %s", strerror(errno)); + isc__strerror(WSAGetLastError(), strbuf, sizeof(strbuf)); + UNEXPECTED_ERROR(__FILE__, __LINE__, "getsockname: %s", + strbuf); ret = ISC_R_UNEXPECTED; goto out; } diff --git a/lib/isccfg/api b/lib/isccfg/api index 494278e7..06977fcb 100644 --- a/lib/isccfg/api +++ b/lib/isccfg/api @@ -1,3 +1,3 @@ LIBINTERFACE = 0 -LIBREVISION = 0 +LIBREVISION = 1 LIBAGE = 0 diff --git a/lib/isccfg/check.c b/lib/isccfg/check.c index 5dd87d03..0e2d2606 100644 --- a/lib/isccfg/check.c +++ b/lib/isccfg/check.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2001 Internet Software Consortium. + * Copyright (C) 2001, 2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,18 +15,22 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: check.c,v 1.14.2.6 2001/11/13 18:36:04 gson Exp $ */ +/* $Id: check.c,v 1.14.2.14 2002/02/19 22:30:05 gson Exp $ */ #include <config.h> #include <stdlib.h> #include <string.h> +#include <isc/buffer.h> #include <isc/log.h> +#include <isc/mem.h> #include <isc/result.h> #include <isc/symtab.h> #include <isc/util.h> +#include <dns/fixedname.h> + #include <isccfg/cfg.h> #include <isccfg/check.h> @@ -101,19 +105,25 @@ typedef struct { } optionstable; static isc_result_t -check_zoneconf(cfg_obj_t *zconfig, isc_symtab_t *symtab, isc_log_t *logctx) { +check_zoneconf(cfg_obj_t *zconfig, isc_symtab_t *symtab, isc_log_t *logctx, + isc_mem_t *mctx) +{ const char *zname; const char *typestr; unsigned int ztype; cfg_obj_t *zoptions; cfg_obj_t *obj = NULL; + cfg_obj_t *addrlist = NULL; isc_symvalue_t symvalue; isc_result_t result = ISC_R_SUCCESS; isc_result_t tresult; unsigned int i; + dns_fixedname_t fixedname; + isc_buffer_t b; static optionstable options[] = { { "allow-query", MASTERZONE | SLAVEZONE | STUBZONE }, + { "allow-notify", SLAVEZONE }, { "allow-transfer", MASTERZONE | SLAVEZONE }, { "notify", MASTERZONE | SLAVEZONE }, { "also-notify", MASTERZONE | SLAVEZONE }, @@ -186,17 +196,41 @@ check_zoneconf(cfg_obj_t *zconfig, isc_symtab_t *symtab, isc_log_t *logctx) { /* * Look for an already existing zone. + * We need to make this cannonical as isc_symtab_define() + * deals with strings. */ - symvalue.as_pointer = NULL; - tresult = isc_symtab_define(symtab, zname, - ztype == HINTZONE ? 1 : 2, - symvalue, isc_symexists_reject); - if (tresult == ISC_R_EXISTS) { + dns_fixedname_init(&fixedname); + isc_buffer_init(&b, zname, strlen(zname)); + isc_buffer_add(&b, strlen(zname)); + result = dns_name_fromtext(dns_fixedname_name(&fixedname), &b, + dns_rootname, ISC_TRUE, NULL); + if (result != ISC_R_SUCCESS) { cfg_obj_log(zconfig, logctx, ISC_LOG_ERROR, - "zone '%s': already exists ", zname); + "zone '%s': is not a valid name", zname); result = ISC_R_FAILURE; - } else if (tresult != ISC_R_SUCCESS) - return (tresult); + } else { + char namebuf[DNS_NAME_FORMATSIZE]; + char *key; + + dns_name_format(dns_fixedname_name(&fixedname), + namebuf, sizeof(namebuf)); + key = isc_mem_strdup(mctx, namebuf); + if (key == NULL) + return (ISC_R_NOMEMORY); + symvalue.as_pointer = NULL; + tresult = isc_symtab_define(symtab, key, + ztype == HINTZONE ? 1 : 2, + symvalue, isc_symexists_reject); + if (tresult == ISC_R_EXISTS) { + isc_mem_free(mctx, key); + cfg_obj_log(zconfig, logctx, ISC_LOG_ERROR, + "zone '%s': already exists ", zname); + result = ISC_R_FAILURE; + } else if (tresult != ISC_R_SUCCESS) { + isc_mem_strdup(mctx, key); + return (tresult); + } + } /* * Look for inappropriate options for the given zone type. @@ -226,6 +260,13 @@ check_zoneconf(cfg_obj_t *zconfig, isc_symtab_t *symtab, isc_log_t *logctx) { zname); result = ISC_R_FAILURE; } + addrlist = cfg_tuple_get(obj, "addresses"); + if (cfg_list_first(addrlist) == NULL) { + cfg_obj_log(zoptions, logctx, ISC_LOG_ERROR, + "zone '%s': empty 'masters' entry", + zname); + result = ISC_R_FAILURE; + } } /* @@ -344,6 +385,13 @@ check_keylist(cfg_obj_t *keys, isc_symtab_t *symtab, isc_log_t *logctx) { } return (result); } + +static void +freekey(char *key, unsigned int type, isc_symvalue_t value, void *userarg) { + UNUSED(type); + UNUSED(value); + isc_mem_free(userarg, key); +} static isc_result_t check_viewconf(cfg_obj_t *config, cfg_obj_t *vconfig, isc_log_t *logctx, isc_mem_t *mctx) @@ -359,7 +407,8 @@ check_viewconf(cfg_obj_t *config, cfg_obj_t *vconfig, isc_log_t *logctx, isc_mem * Check that all zone statements are syntactically correct and * there are no duplicate zones. */ - tresult = isc_symtab_create(mctx, 100, NULL, NULL, ISC_TRUE, &symtab); + tresult = isc_symtab_create(mctx, 100, freekey, mctx, + ISC_TRUE, &symtab); if (tresult != ISC_R_SUCCESS) return (ISC_R_NOMEMORY); @@ -374,7 +423,7 @@ check_viewconf(cfg_obj_t *config, cfg_obj_t *vconfig, isc_log_t *logctx, isc_mem { cfg_obj_t *zone = cfg_listelt_value(element); - if (check_zoneconf(zone, symtab, logctx) != ISC_R_SUCCESS) + if (check_zoneconf(zone, symtab, logctx, mctx) != ISC_R_SUCCESS) result = ISC_R_FAILURE; } @@ -440,11 +489,15 @@ isc_result_t cfg_check_namedconf(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx) { cfg_obj_t *options = NULL; cfg_obj_t *views = NULL; + cfg_obj_t *acls = NULL; cfg_obj_t *obj; cfg_listelt_t *velement; isc_result_t result = ISC_R_SUCCESS; isc_result_t tresult; + static const char *builtin[] = { "localhost", "localnets", + "any", "none" }; + (void)cfg_map_get(config, "options", &options); if (options != NULL && @@ -492,5 +545,48 @@ cfg_check_namedconf(cfg_obj_t *config, isc_log_t *logctx, isc_mem_t *mctx) { } } + tresult = cfg_map_get(config, "acl", &acls); + if (tresult == ISC_R_SUCCESS) { + cfg_listelt_t *elt; + cfg_listelt_t *elt2; + const char *aclname; + + for (elt = cfg_list_first(acls); + elt != NULL; + elt = cfg_list_next(elt)) { + cfg_obj_t *acl = cfg_listelt_value(elt); + unsigned int i; + + aclname = cfg_obj_asstring(cfg_tuple_get(acl, "name")); + for (i = 0; + i < sizeof(builtin) / sizeof(builtin[0]); + i++) + if (strcasecmp(aclname, builtin[i]) == 0) { + cfg_obj_log(acl, logctx, ISC_LOG_ERROR, + "attempt to redefine " + "builtin acl '%s'", + aclname); + result = ISC_R_FAILURE; + break; + } + + for (elt2 = cfg_list_next(elt); + elt2 != NULL; + elt2 = cfg_list_next(elt2)) { + cfg_obj_t *acl2 = cfg_listelt_value(elt2); + const char *name; + name = cfg_obj_asstring(cfg_tuple_get(acl2, + "name")); + if (strcasecmp(aclname, name) == 0) { + cfg_obj_log(acl2, logctx, ISC_LOG_ERROR, + "attempt to redefine " + "acl '%s'", name); + result = ISC_R_FAILURE; + break; + } + } + } + } + return (result); } diff --git a/lib/isccfg/parser.c b/lib/isccfg/parser.c index b3f0077e..2d0832da 100644 --- a/lib/isccfg/parser.c +++ b/lib/isccfg/parser.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000, 2001 Internet Software Consortium. + * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: parser.c,v 1.70.2.9 2001/11/13 02:52:10 marka Exp $ */ +/* $Id: parser.c,v 1.70.2.14 2002/02/08 03:57:47 marka Exp $ */ #include <config.h> @@ -857,7 +857,6 @@ options_clauses[] = { static cfg_clausedef_t view_clauses[] = { - { "allow-notify", &cfg_type_bracketed_aml, 0 }, { "allow-recursion", &cfg_type_bracketed_aml, 0 }, { "allow-v6-synthesis", &cfg_type_bracketed_aml, 0 }, { "sortlist", &cfg_type_bracketed_aml, 0 }, @@ -877,8 +876,6 @@ view_clauses[] = { */ { "query-source", &cfg_type_querysource4, 0 }, { "query-source-v6", &cfg_type_querysource6, 0 }, - { "notify-source", &cfg_type_sockaddr4wild, 0 }, - { "notify-source-v6", &cfg_type_sockaddr6wild, 0 }, { "cleaning-interval", &cfg_type_uint32, 0 }, { "min-roots", &cfg_type_uint32, CFG_CLAUSEFLAG_NOTIMP }, { "lame-ttl", &cfg_type_uint32, 0 }, @@ -912,7 +909,10 @@ zone_clauses[] = { { "allow-query", &cfg_type_bracketed_aml, 0 }, { "allow-transfer", &cfg_type_bracketed_aml, 0 }, { "allow-update-forwarding", &cfg_type_bracketed_aml, 0 }, + { "allow-notify", &cfg_type_bracketed_aml, 0 }, { "notify", &cfg_type_notifytype, 0 }, + { "notify-source", &cfg_type_sockaddr4wild, 0 }, + { "notify-source-v6", &cfg_type_sockaddr6wild, 0 }, { "also-notify", &cfg_type_portiplist, 0 }, { "dialup", &cfg_type_dialuptype, 0 }, { "forward", &cfg_type_forwardtype, 0 }, @@ -1359,11 +1359,13 @@ cfg_parser_create(isc_mem_t *mctx, isc_log_t *lctx, cfg_parser_t **ret) pctx->seen_eof = ISC_FALSE; pctx->ungotten = ISC_FALSE; pctx->errors = 0; + pctx->warnings = 0; pctx->open_files = NULL; pctx->closed_files = NULL; pctx->line = 0; pctx->callback = NULL; pctx->callbackarg = NULL; + pctx->token.type = isc_tokentype_unknown; memset(specials, 0, sizeof(specials)); specials['{'] = 1; @@ -3507,6 +3509,7 @@ cfg_gettoken(cfg_parser_t *pctx, int options) { options |= (ISC_LEXOPT_EOF | ISC_LEXOPT_NOMORE); redo: + pctx->token.type = isc_tokentype_unknown; result = isc_lex_gettoken(pctx->lexer, options, &pctx->token); pctx->ungotten = ISC_FALSE; pctx->line = isc_lex_getsourceline(pctx->lexer); @@ -3541,6 +3544,11 @@ cfg_gettoken(cfg_parser_t *pctx, int options) { parser_error(pctx, LOG_NEAR, "token too big"); break; + case ISC_R_IOERROR: + parser_error(pctx, 0, "%s", + isc_result_totext(result)); + break; + default: parser_error(pctx, LOG_NEAR, "%s", isc_result_totext(result)); @@ -3651,6 +3659,9 @@ parser_complain(cfg_parser_t *pctx, isc_boolean_t is_warning, if (pctx->token.type == isc_tokentype_eof) { snprintf(tokenbuf, sizeof(tokenbuf), "end of file"); + } else if (pctx->token.type == isc_tokentype_unknown) { + flags = 0; + tokenbuf[0] = '\0'; } else { isc_lex_getlasttokentext(pctx->lexer, &pctx->token, &r); diff --git a/lib/isccfg/win32/libisccfg.dsp b/lib/isccfg/win32/libisccfg.dsp index 1abdcf3e..ec2df68e 100644 --- a/lib/isccfg/win32/libisccfg.dsp +++ b/lib/isccfg/win32/libisccfg.dsp @@ -54,7 +54,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../isc/win32/Release/libisc.lib /nologo /dll /machine:I386 /out:"../../../Build/Release/libisccfg.dll" +# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../isc/win32/Release/libisc.lib ../../dns/win32/Release/libdns.lib /nologo /dll /machine:I386 /out:"../../../Build/Release/libisccfg.dll" !ELSEIF "$(CFG)" == "libisccfg - Win32 Debug" @@ -81,7 +81,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../isc/win32/debug/libisc.lib /nologo /dll /debug /machine:I386 /out:"../../../Build/Debug/libisccfg.dll" /pdbtype:sept +# ADD LINK32 user32.lib advapi32.lib ws2_32.lib ../../isc/win32/debug/libisc.lib ../../dns/win32/debug/libdns.lib /nologo /dll /debug /machine:I386 /out:"../../../Build/Debug/libisccfg.dll" /pdbtype:sept !ENDIF diff --git a/lib/isccfg/win32/libisccfg.mak b/lib/isccfg/win32/libisccfg.mak index a3d8f117..c0eee0ac 100644 --- a/lib/isccfg/win32/libisccfg.mak +++ b/lib/isccfg/win32/libisccfg.mak @@ -25,15 +25,30 @@ NULL= NULL=nul !ENDIF +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + !IF "$(CFG)" == "libisccfg - Win32 Release" OUTDIR=.\Release INTDIR=.\Release +!IF "$(RECURSE)" == "0" + ALL : "..\..\..\Build\Release\libisccfg.dll" +!ELSE + +ALL : "libdns - Win32 Release" "libisc - Win32 Release" "..\..\..\Build\Release\libisccfg.dll" + +!ENDIF +!IF "$(RECURSE)" == "1" +CLEAN :"libisc - Win32 ReleaseCLEAN" "libdns - Win32 ReleaseCLEAN" +!ELSE CLEAN : +!ENDIF -@erase "$(INTDIR)\check.obj" -@erase "$(INTDIR)\DLLMain.obj" -@erase "$(INTDIR)\log.obj" @@ -47,48 +62,14 @@ CLEAN : "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" -CPP=cl.exe CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../..../lib/dns/sec/openssl/include" /I "../../../lib/dns/sec/dst/include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "__STDC__" /D "_MBCS" /D "_USRDLL" /D "USE_MD5" /D "OPENSSL" /D "DST_USE_PRIVATE_OPENSSL" /D "LIBISCCFG_EXPORTS" /Fp"$(INTDIR)\libisccfg.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -MTL=midl.exe MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 -RSC=rc.exe BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\libisccfg.bsc" BSC32_SBRS= \ LINK32=link.exe -LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../isc/win32/Release/libisc.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\libisccfg.pdb" /machine:I386 /def:".\libisccfg.def" /out:"../../../Build/Release/libisccfg.dll" /implib:"$(OUTDIR)\libisccfg.lib" +LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../isc/win32/Release/libisc.lib ../../dns/win32/Release/libdns.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\libisccfg.pdb" /machine:I386 /def:".\libisccfg.def" /out:"../../../Build/Release/libisccfg.dll" /implib:"$(OUTDIR)\libisccfg.lib" DEF_FILE= \ ".\libisccfg.def" LINK32_OBJS= \ @@ -96,7 +77,9 @@ LINK32_OBJS= \ "$(INTDIR)\DLLMain.obj" \ "$(INTDIR)\log.obj" \ "$(INTDIR)\parser.obj" \ - "$(INTDIR)\version.obj" + "$(INTDIR)\version.obj" \ + "..\..\isc\win32\Release\libisc.lib" \ + "..\..\dns\win32\Release\libdns.lib" "..\..\..\Build\Release\libisccfg.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< @@ -111,10 +94,21 @@ INTDIR=.\Debug OutDir=.\Debug # End Custom Macros +!IF "$(RECURSE)" == "0" + ALL : "..\..\..\Build\Debug\libisccfg.dll" "$(OUTDIR)\libisccfg.bsc" +!ELSE + +ALL : "libdns - Win32 Debug" "libisc - Win32 Debug" "..\..\..\Build\Debug\libisccfg.dll" "$(OUTDIR)\libisccfg.bsc" + +!ENDIF +!IF "$(RECURSE)" == "1" +CLEAN :"libisc - Win32 DebugCLEAN" "libdns - Win32 DebugCLEAN" +!ELSE CLEAN : +!ENDIF -@erase "$(INTDIR)\check.obj" -@erase "$(INTDIR)\check.sbr" -@erase "$(INTDIR)\DLLMain.obj" @@ -137,42 +131,8 @@ CLEAN : "$(OUTDIR)" : if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" -CPP=cl.exe CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "./" /I "../../../" /I "include" /I "../include" /I "../../../lib/isc/win32" /I "../../../lib/isc/win32/include" /I "../../../lib/isc/include" /I "../../../lib/dns/win32/include" /I "../../../lib/dns/include" /I "../..../lib/dns/sec/openssl/include" /I "../../../lib/dns/sec/dst/include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBISCCFG_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\libisccfg.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c - -.c{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.obj:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.c{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cpp{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -.cxx{$(INTDIR)}.sbr:: - $(CPP) @<< - $(CPP_PROJ) $< -<< - -MTL=midl.exe MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 -RSC=rc.exe BSC32=bscmake.exe BSC32_FLAGS=/nologo /o"$(OUTDIR)\libisccfg.bsc" BSC32_SBRS= \ @@ -188,7 +148,7 @@ BSC32_SBRS= \ << LINK32=link.exe -LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../isc/win32/debug/libisc.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\libisccfg.pdb" /debug /machine:I386 /def:".\libisccfg.def" /out:"../../../Build/Debug/libisccfg.dll" /implib:"$(OUTDIR)\libisccfg.lib" /pdbtype:sept +LINK32_FLAGS=user32.lib advapi32.lib ws2_32.lib ../../isc/win32/debug/libisc.lib ../../dns/win32/debug/libdns.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\libisccfg.pdb" /debug /machine:I386 /def:".\libisccfg.def" /out:"../../../Build/Debug/libisccfg.dll" /implib:"$(OUTDIR)\libisccfg.lib" /pdbtype:sept DEF_FILE= \ ".\libisccfg.def" LINK32_OBJS= \ @@ -196,7 +156,9 @@ LINK32_OBJS= \ "$(INTDIR)\DLLMain.obj" \ "$(INTDIR)\log.obj" \ "$(INTDIR)\parser.obj" \ - "$(INTDIR)\version.obj" + "$(INTDIR)\version.obj" \ + "..\..\isc\win32\Debug\libisc.lib" \ + "..\..\dns\win32\Debug\libdns.lib" "..\..\..\Build\Debug\libisccfg.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) $(LINK32) @<< @@ -205,6 +167,36 @@ LINK32_OBJS= \ !ENDIF +.c{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cpp{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cxx{$(INTDIR)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.c{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cpp{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + +.cxx{$(INTDIR)}.sbr:: + $(CPP) @<< + $(CPP_PROJ) $< +<< + !IF "$(NO_EXTERNAL_DEPS)" != "1" !IF EXISTS("libisccfg.dep") @@ -302,6 +294,58 @@ SOURCE=.\version.c !ENDIF +!IF "$(CFG)" == "libisccfg - Win32 Release" + +"libisc - Win32 Release" : + cd "\bind-9.2.1rc1\lib\isc\win32" + $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Release" + cd "..\..\isccfg\win32" + +"libisc - Win32 ReleaseCLEAN" : + cd "\bind-9.2.1rc1\lib\isc\win32" + $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Release" RECURSE=1 CLEAN + cd "..\..\isccfg\win32" + +!ELSEIF "$(CFG)" == "libisccfg - Win32 Debug" + +"libisc - Win32 Debug" : + cd "\bind-9.2.1rc1\lib\isc\win32" + $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Debug" + cd "..\..\isccfg\win32" + +"libisc - Win32 DebugCLEAN" : + cd "\bind-9.2.1rc1\lib\isc\win32" + $(MAKE) /$(MAKEFLAGS) /F ".\libisc.mak" CFG="libisc - Win32 Debug" RECURSE=1 CLEAN + cd "..\..\isccfg\win32" + +!ENDIF + +!IF "$(CFG)" == "libisccfg - Win32 Release" + +"libdns - Win32 Release" : + cd "\bind-9.2.1rc1\lib\dns\win32" + $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Release" + cd "..\..\isccfg\win32" + +"libdns - Win32 ReleaseCLEAN" : + cd "\bind-9.2.1rc1\lib\dns\win32" + $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Release" RECURSE=1 CLEAN + cd "..\..\isccfg\win32" + +!ELSEIF "$(CFG)" == "libisccfg - Win32 Debug" + +"libdns - Win32 Debug" : + cd "\bind-9.2.1rc1\lib\dns\win32" + $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Debug" + cd "..\..\isccfg\win32" + +"libdns - Win32 DebugCLEAN" : + cd "\bind-9.2.1rc1\lib\dns\win32" + $(MAKE) /$(MAKEFLAGS) /F ".\libdns.mak" CFG="libdns - Win32 Debug" RECURSE=1 CLEAN + cd "..\..\isccfg\win32" + +!ENDIF + !ENDIF @@ -1,10 +1,10 @@ -# $Id: version,v 1.26.2.10 2001/11/25 01:38:13 gson Exp $ +# $Id: version,v 1.26.2.11 2002/01/25 03:04:22 marka Exp $ # # This file must follow /bin/sh rules. It is imported directly via # configure. # MAJORVER=9 MINORVER=2 -PATCHVER=0 -RELEASETYPE= -RELEASEVER= +PATCHVER=1 +RELEASETYPE=rc +RELEASEVER=1 |