summaryrefslogtreecommitdiff
path: root/contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.3rc1-patch
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.3rc1-patch')
-rw-r--r--contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.3rc1-patch976
1 files changed, 976 insertions, 0 deletions
diff --git a/contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.3rc1-patch b/contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.3rc1-patch
new file mode 100644
index 00000000..a074344e
--- /dev/null
+++ b/contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.3rc1-patch
@@ -0,0 +1,976 @@
+--- ./bin/dig/dig.1.orig Fri May 16 15:27:30 2003
++++ ./bin/dig/dig.1 Tue Jul 22 15:01:36 2003
+@@ -350,4 +350,15 @@
+ will not print the initial query when it looks up the NS records for
+ isc.org.
++.SH "IDN SUPPORT"
++.PP
++If \fBdig\fR has been built with IDN (internationalized
++domain name) support, it can accept and display non-ASCII domain names.
++\fBdig\fR appropriately converts character encoding of
++domain name before sending a request to DNS server or displaying a
++reply from the server.
++If you'd like to turn off the IDN support for some reason, defines
++the \fBIDN_DISABLE\fR environment variable.
++The IDN support is disabled if the the variable is set when
++\fBdig\fR runs.
+ .SH "FILES"
+ .PP
+--- ./bin/dig/Makefile.in.orig Fri Dec 27 10:51:00 2002
++++ ./bin/dig/Makefile.in Tue Jul 22 15:01:36 2003
+@@ -37,5 +37,5 @@
+ DEPLIBS = ${DNSDEPLIBS} ${ISCDEPLIBS}
+
+-LIBS = ${DNSLIBS} ${ISCLIBS} @LIBS@
++LIBS = ${DNSLIBS} ${ISCLIBS} @IDNLIBS@ @LIBS@
+
+ SUBDIRS =
+--- ./bin/dig/dig.docbook.orig Mon May 12 12:50:15 2003
++++ ./bin/dig/dig.docbook Tue Jul 22 15:01:36 2003
+@@ -530,4 +530,19 @@
+
+ <refsect1>
++<title>IDN SUPPORT</title>
++<para>
++If <command>dig</command> has been built with IDN (internationalized
++domain name) support, it can accept and display non-ASCII domain names.
++<command>dig</command> appropriately converts character encoding of
++domain name before sending a request to DNS server or displaying a
++reply from the server.
++If you'd like to turn off the IDN support for some reason, defines
++the <envar>IDN_DISABLE</envar> environment variable.
++The IDN support is disabled if the the variable is set when
++<command>dig</command> runs.
++</para>
++</refsect1>
++
++<refsect1>
+ <title>FILES</title>
+ <para>
+--- ./bin/dig/dighost.c.orig Tue Jul 22 14:33:12 2003
++++ ./bin/dig/dighost.c Tue Jul 22 15:01:36 2003
+@@ -33,4 +33,15 @@
+ #include <limits.h>
+
++#ifdef HAVE_LOCALE_H
++#include <locale.h>
++#endif
++
++#ifdef WITH_IDN
++#include <idn/result.h>
++#include <idn/log.h>
++#include <idn/resconf.h>
++#include <idn/api.h>
++#endif
++
+ #include <dns/byaddr.h>
+ #include <dns/fixedname.h>
+@@ -132,4 +143,16 @@
+ dig_lookup_t *current_lookup = NULL;
+
++#ifdef WITH_IDN
++static void initialize_idn(void);
++static isc_result_t output_filter(isc_buffer_t *buffer,
++ unsigned int used_org,
++ isc_boolean_t absolute);
++static idn_result_t append_textname(char *name, const char *origin,
++ size_t namesize);
++static void idn_check_result(idn_result_t r, const char *msg);
++
++#define MAXDLEN 256
++#endif
++
+ /*
+ * Apply and clear locks at the event level in global task.
+@@ -652,4 +675,8 @@
+ }
+
++#ifdef WITH_IDN
++ initialize_idn();
++#endif
++
+ if (keyfile[0] != 0)
+ setup_file_key();
+@@ -1172,4 +1199,12 @@
+ dns_compress_t cctx;
+ char store[MXNAME];
++#ifdef WITH_IDN
++ idn_result_t mr;
++ char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
++#endif
++
++#ifdef WITH_IDN
++ dns_name_settotextfilter(output_filter);
++#endif
+
+ REQUIRE(lookup != NULL);
+@@ -1200,4 +1235,15 @@
+ sizeof(lookup->onamespace));
+
++#ifdef WITH_IDN
++ /*
++ * We cannot convert `textname' and `origin' separately.
++ * `textname' doesn't contain TLD, but local mapping needs
++ * TLD.
++ */
++ mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
++ utf8_textname, sizeof(utf8_textname));
++ idn_check_result(mr, "convert textname to UTF-8");
++#endif
++
+ /*
+ * If the name has too many dots, force the origin to be NULL
+@@ -1208,4 +1254,11 @@
+ */
+ /* XXX New search here? */
++#ifdef WITH_IDN
++ if ((count_dots(utf8_textname) >= ndots) || !usesearch)
++ lookup->origin = NULL; /* Force abs lookup */
++ else if (lookup->origin == NULL && lookup->new_search && usesearch) {
++ lookup->origin = ISC_LIST_HEAD(search_list);
++ }
++#else
+ if ((count_dots(lookup->textname) >= ndots) || !usesearch)
+ lookup->origin = NULL; /* Force abs lookup */
+@@ -1213,5 +1266,27 @@
+ lookup->origin = ISC_LIST_HEAD(search_list);
+ }
++#endif
++
++#ifdef WITH_IDN
+ if (lookup->origin != NULL) {
++ mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP,
++ lookup->origin->origin, utf8_origin,
++ sizeof(utf8_origin));
++ idn_check_result(mr, "convert origin to UTF-8");
++ mr = append_textname(utf8_textname, utf8_origin,
++ sizeof(utf8_textname));
++ idn_check_result(mr, "append origin to textname");
++ }
++ mr = idn_encodename(IDN_LOCALMAP | IDN_NAMEPREP | IDN_ASCCHECK |
++ IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
++ idn_textname, sizeof(idn_textname));
++ idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
++#endif
++
++#ifdef WITH_IDN
++ if (0) {
++#else
++ if (lookup->origin != NULL) {
++#endif
+ debug("trying origin %s", lookup->origin->origin);
+ result = dns_message_gettempname(lookup->sendmsg,
+@@ -1258,4 +1333,13 @@
+ dns_name_clone(dns_rootname, lookup->name);
+ else {
++#ifdef WITH_IDN
++ len = strlen(idn_textname);
++ isc_buffer_init(&b, idn_textname, len);
++ isc_buffer_add(&b, len);
++ result = dns_name_fromtext(lookup->name, &b,
++ dns_rootname,
++ ISC_FALSE,
++ &lookup->namebuf);
++#else
+ len = strlen(lookup->textname);
+ isc_buffer_init(&b, lookup->textname, len);
+@@ -1265,4 +1349,5 @@
+ ISC_FALSE,
+ &lookup->namebuf);
++#endif
+ }
+ if (result != ISC_R_SUCCESS) {
+@@ -2693,2 +2778,100 @@
+ isc_mem_destroy(&mctx);
+ }
++
++#ifdef WITH_IDN
++static void
++initialize_idn(void) {
++ idn_result_t r;
++
++#ifdef HAVE_SETLOCALE
++ /* Set locale */
++ (void)setlocale(LC_ALL, "");
++#endif
++ /* Create configuration context. */
++ r = idn_nameinit(1);
++ if (r != idn_success)
++ fatal("idn api initialization failed: %s",
++ idn_result_tostring(r));
++
++ /* Set domain name -> text post-conversion filter. */
++ dns_name_settotextfilter(output_filter);
++}
++
++static isc_result_t
++output_filter(isc_buffer_t *buffer, unsigned int used_org,
++ isc_boolean_t absolute)
++{
++ char tmp1[MAXDLEN], tmp2[MAXDLEN];
++ size_t fromlen, tolen;
++ isc_boolean_t end_with_dot;
++
++ /*
++ * Copy contents of 'buffer' to 'tmp1', supply trailing dot
++ * if 'absolute' is true, and terminate with NUL.
++ */
++ fromlen = isc_buffer_usedlength(buffer) - used_org;
++ if (fromlen >= MAXDLEN)
++ return (ISC_R_SUCCESS);
++ memcpy(tmp1, (char *)isc_buffer_base(buffer) + used_org, fromlen);
++ end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE;
++ if (absolute && !end_with_dot) {
++ fromlen++;
++ if (fromlen >= MAXDLEN)
++ return (ISC_R_SUCCESS);
++ tmp1[fromlen - 1] = '.';
++ }
++ tmp1[fromlen] = '\0';
++
++ /*
++ * Convert contents of 'tmp1' to local encoding.
++ */
++ if (idn_decodename(IDN_DECODE_APP, tmp1, tmp2, MAXDLEN) != idn_success)
++ return (ISC_R_SUCCESS);
++ strcpy(tmp1, tmp2);
++
++ /*
++ * Copy the converted contents in 'tmp1' back to 'buffer'.
++ * If we have appended trailing dot, remove it.
++ */
++ tolen = strlen(tmp1);
++ if (absolute && !end_with_dot && tmp1[tolen - 1] == '.')
++ tolen--;
++
++ if (isc_buffer_length(buffer) < used_org + tolen)
++ return (ISC_R_NOSPACE);
++
++ isc_buffer_subtract(buffer, isc_buffer_usedlength(buffer) - used_org);
++ memcpy(isc_buffer_used(buffer), tmp1, tolen);
++ isc_buffer_add(buffer, tolen);
++
++ return (ISC_R_SUCCESS);
++}
++
++static idn_result_t
++append_textname(char *name, const char *origin, size_t namesize) {
++ size_t namelen = strlen(name);
++ size_t originlen = strlen(origin);
++
++ /* Already absolute? */
++ if (namelen > 0 && name[namelen - 1] == '.')
++ return idn_success;
++
++ /* Append dot and origin */
++
++ if (namelen + 1 + originlen >= namesize)
++ return idn_buffer_overflow;
++
++ name[namelen++] = '.';
++ (void)strcpy(name + namelen, origin);
++ return idn_success;
++}
++
++static void
++idn_check_result(idn_result_t r, const char *msg) {
++ if (r != idn_success) {
++ exitcode = 1;
++ fatal("%s: %s", msg, idn_result_tostring(r));
++ }
++}
++
++#endif /* WITH_IDN */
+--- ./bin/dig/host.1.orig Mon May 12 11:13:18 2003
++++ ./bin/dig/host.1 Tue Jul 22 15:01:36 2003
+@@ -121,4 +121,15 @@
+ will be set to the number of seconds given by the hardware's maximum
+ value for an integer quantity.
++.SH "IDN SUPPORT"
++.PP
++If \fBhost\fR has been built with IDN (internationalized
++domain name) support, it can accept and display non-ASCII domain names.
++\fBhost\fR appropriately converts character encoding of
++domain name before sending a request to DNS server or displaying a
++reply from the server.
++If you'd like to turn off the IDN support for some reason, defines
++the \fBIDN_DISABLE\fR environment variable.
++The IDN support is disabled if the the variable is set when
++\fBhost\fR runs.
+ .SH "FILES"
+ .PP
+--- ./bin/dig/host.docbook.orig Thu Mar 6 15:38:10 2003
++++ ./bin/dig/host.docbook Tue Jul 22 15:01:36 2003
+@@ -182,4 +182,19 @@
+
+ <refsect1>
++<title>IDN SUPPORT</title>
++<para>
++If <command>host</command> has been built with IDN (internationalized
++domain name) support, it can accept and display non-ASCII domain names.
++<command>host</command> appropriately converts character encoding of
++domain name before sending a request to DNS server or displaying a
++reply from the server.
++If you'd like to turn off the IDN support for some reason, defines
++the <envar>IDN_DISABLE</envar> environment variable.
++The IDN support is disabled if the the variable is set when
++<command>host</command> runs.
++</para>
++</refsect1>
++
++<refsect1>
+ <title>FILES</title>
+ <para>
+--- ./lib/dns/include/dns/name.h.orig Tue Feb 18 15:32:01 2003
++++ ./lib/dns/include/dns/name.h Tue Jul 22 15:01:37 2003
+@@ -220,4 +220,15 @@
+ #define DNS_NAME_MAXWIRE 255
+
++#ifdef WITH_IDN
++/*
++ * Text output filter procedure.
++ * 'target' is the buffer to be converted. The region to be converted
++ * is from 'buffer'->base + 'used_org' to the end of the used region.
++ */
++typedef isc_result_t (*dns_name_totextfilter_t)(isc_buffer_t *target,
++ unsigned int used_org,
++ isc_boolean_t absolute);
++#endif
++
+ /***
+ *** Initialization
+@@ -1245,4 +1256,12 @@
+ *
+ */
++
++#ifdef WITH_IDN
++void
++dns_name_settotextfilter(dns_name_totextfilter_t proc);
++/*
++ * Call 'proc' at the end of dns_name_totext.
++ */
++#endif /* WITH_IDN */
+
+ #define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1)
+--- ./lib/dns/name.c.orig Tue Feb 18 15:31:56 2003
++++ ./lib/dns/name.c Tue Jul 22 15:01:36 2003
+@@ -195,4 +195,11 @@
+ dns_name_t *dns_wildcardname = &wild;
+
++#ifdef WITH_IDN
++/*
++ * dns_name_t to text post-conversion procedure.
++ */
++static dns_name_totextfilter_t totext_filter_proc = NULL;
++#endif
++
+ static void
+ set_offsets(const dns_name_t *name, unsigned char *offsets,
+@@ -1685,4 +1692,7 @@
+ isc_boolean_t saw_root = ISC_FALSE;
+ char num[4];
++#ifdef WITH_IDN
++ unsigned int oused = target->used;
++#endif
+
+ /*
+@@ -1862,4 +1872,8 @@
+ isc_buffer_add(target, tlen - trem);
+
++#ifdef WITH_IDN
++ if (totext_filter_proc != NULL)
++ return ((*totext_filter_proc)(target, oused, saw_root));
++#endif
+ return (ISC_R_SUCCESS);
+ }
+@@ -3326,2 +3340,8 @@
+ }
+
++#ifdef WITH_IDN
++void
++dns_name_settotextfilter(dns_name_totextfilter_t proc) {
++ totext_filter_proc = proc;
++}
++#endif
+--- ./README.idnkit.orig Tue Jul 22 15:01:35 2003
++++ ./README.idnkit Tue Jul 22 15:01:35 2003
+@@ -0,0 +1,113 @@
++
++ BIND-9 IDN patch
++
++ Japan Network Information Center (JPNIC)
++
++
++* What is this patch for?
++
++This patch adds internationalized domain name (IDN) support to BIND-9.
++You'll get internationalized version of dig/host/nslookup commands.
++
++ + internationalized dig/host/nslookup
++ dig/host/nslookup accepts non-ASCII domain names in the local
++ codeset (such as Shift JIS, Big5 or ISO8859-1) determined by
++ the locale information. The domain names are normalized and
++ converted to the encoding on the DNS protocol, and sent to DNS
++ servers. The replies are converted back to the local codeset
++ and displayed.
++
++
++* Compilation & installation
++
++0. Prerequisite
++
++You have to build and install idnkit before building this patched version
++of bind-9.
++
++1. Running configure script
++
++Run `configure' in the top directory. See `README' for the
++configuration options.
++
++This patch adds the following 4 options to `configure'. You should
++at least specify `--with-idn' option to enable IDN support.
++
++ --with-idn[=IDN_PREFIX]
++ To enable IDN support, you have to specify `--with-idn' option.
++ The argument IDN_PREFIX is the install prefix of idnkit. If
++ IDN_PREFIX is omitted, PREFIX (derived from `--prefix=PREFIX')
++ is assumed.
++
++ --with-libiconv[=LIBICONV_PREFIX]
++ Specify this option if idnkit you have installed links GNU
++ libiconv. The argument LIBICONV_PREFIX is install prefix of
++ GNU libiconv. If the argument is omitted, PREFIX (derived
++ from `--prefix=PREFIX') is assumed.
++
++ `--with-libiconv' is shorthand option for GNU libiconv.
++
++ --with-libiconv=/usr/local
++
++ This is equivalent to:
++
++ --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'
++
++ `--with-libiconv' assumes that your C compiler has `-R'
++ option, and that the option adds the specified run-time path
++ to an exacutable binary. If `-R' option of your compiler has
++ different meaning, or your compiler lacks the option, you
++ should use `--with-iconv' option instead. Binary command
++ without run-time path information might be unexecutable.
++ In that case, you would see an error message like:
++
++ error in loading shared libraries: libiconv.so.2: cannot
++ open shared object file
++
++ If both `--with-libiconv' and `--with-iconv' options are
++ specified, `--with-iconv' is prior to `--with-libiconv'.
++
++ --with-iconv=ICONV_LIBSPEC
++ If your libc doens't provide iconv(), you need to specify the
++ library containing iconv() with this option. `ICONV_LIBSPEC'
++ is the argument(s) to `cc' or `ld' to link the library, for
++ example, `--with-iconv="-L/usr/local/lib -liconv"'.
++ You don't need to specify the header file directory for "iconv.h"
++ to the compiler, as it isn't included directly by bind-9 with
++ this patch.
++
++ --with-idnlib=IDN_LIBSPEC
++ With this option, you can explicitly specify the argument(s)
++ to `cc' or `ld' to link the idnkit's library, `libidnkit'. If
++ this option is not specified, `-L${PREFIX}/lib -lidnkit' is
++ assumed, where ${PREFIX} is the installation prefix specified
++ with `--with-idn' option above. You may need to use this
++ option to specify extra argments, for example,
++ `--with-idnlib="-L/usr/local/lib -R/usr/local/lib -lidnkit"'.
++
++Please consult `README' for other configuration options.
++
++Note that if you want to specify some extra header file directories,
++you should use the environment variable STD_CINCLUDES instead of
++CFLAGS, as described in README.
++
++2. Compilation and installation
++
++After running "configure", just do
++
++ make
++ make install
++
++for compiling and installing.
++
++
++* Contact information
++
++Please see http//www.nic.ad.jp/en/idn/ for the latest news
++about idnkit and this patch.
++
++Bug reports and comments on this kit should be sent to
++mdnkit-bugs@nic.ad.jp and idn-cmt@nic.ad.jp, respectively.
++
++
++; $Id: bind-9.2.3rc1-patch,v 1.1.2.1 2003/07/22 06:02:05 marka Exp $
+--- ./config.h.in.orig Mon May 12 13:34:30 2003
++++ ./config.h.in Tue Jul 22 15:05:37 2003
+@@ -131,4 +131,7 @@
+ #undef HAVE_STRERROR
+
++/* Define if you have the setlocale function. */
++#undef HAVE_SETLOCALE
++
+ /* Define to 1 if you have the <dlfcn.h> header file. */
+ #undef HAVE_DLFCN_H
+@@ -158,4 +161,7 @@
+ #undef HAVE_LINUX_CAPABILITY_H
+
++/* Define if you have the <locale.h> header file. */
++#undef HAVE_LOCALE_H
++
+ /* Define to 1 if you have the <memory.h> header file. */
+ #undef HAVE_MEMORY_H
+@@ -177,4 +183,8 @@
+
+ /* Define to 1 if you have the <sys/select.h> header file. */
++
++/* define if idnkit support is to be included. */
++#undef WITH_IDN
++
+ #undef HAVE_SYS_SELECT_H
+
+--- ./configure.orig Tue May 13 12:51:45 2003
++++ ./configure Tue Jul 22 15:01:35 2003
+@@ -1008,4 +1008,8 @@
+ --with-pic try to use only PIC/non-PIC objects default=use both
+ --with-kame=PATH use Kame IPv6 default path /usr/local/v6
++ --with-idn=MPREFIX enable IDN support using idnkit default PREFIX
++ --with-libiconv=IPREFIX GNU libiconv are in IPREFIX default PREFIX
++ --with-iconv=LIBSPEC specify iconv library default -liconv
++ --with-idnlib=ARG specify libidnkit
+
+ Some influential environment variables:
+@@ -7372,5 +7376,5 @@
+ *-*-irix6*)
+ # Find out which ABI we are using.
+- echo '#line 7374 "configure"' > conftest.$ac_ext
++ echo '#line 7378 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+@@ -7915,5 +7919,5 @@
+ CFLAGS="$CFLAGS -o out/conftest2.$ac_objext"
+ compiler_c_o=no
+-if { (eval echo configure:7917: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
++if { (eval echo configure:7921: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then
+ # The compiler can only warn and ignore the option if not recognized
+ # So say no if there are warnings
+@@ -9600,5 +9604,5 @@
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 9602 "configure"
++#line 9606 "configure"
+ #include "confdefs.h"
+
+@@ -9698,5 +9702,5 @@
+ lt_status=$lt_dlunknown
+ cat > conftest.$ac_ext <<EOF
+-#line 9700 "configure"
++#line 9704 "configure"
+ #include "confdefs.h"
+
+@@ -13270,4 +13274,310 @@
+
+ #
++# IDN support
++#
++
++# Check whether --with-idn or --without-idn was given.
++if test "${with_idn+set}" = set; then
++ withval="$with_idn"
++ use_idn="$withval"
++else
++ use_idn="no"
++fi;
++case "$use_idn" in
++yes)
++ if test X$prefix = XNONE ; then
++ idn_path=/usr/local
++ else
++ idn_path=$prefix
++ fi
++ ;;
++no)
++ ;;
++*)
++ idn_path="$use_idn"
++ ;;
++esac
++
++iconvinc=
++iconvlib=
++
++# Check whether --with-libiconv or --without-libiconv was given.
++if test "${with_libiconv+set}" = set; then
++ withval="$with_libiconv"
++ use_libiconv="$withval"
++else
++ use_libiconv="no"
++fi;
++case "$use_libiconv" in
++yes)
++ if test X$prefix = XNONE ; then
++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
++ else
++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
++ fi
++ ;;
++no)
++ iconvlib=
++ ;;
++*)
++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
++ ;;
++esac
++
++
++# Check whether --with-iconv or --without-iconv was given.
++if test "${with_iconv+set}" = set; then
++ withval="$with_iconv"
++ iconvlib="$withval"
++fi;
++case "$iconvlib" in
++no)
++ iconvlib=
++ ;;
++yes)
++ iconvlib=-liconv
++ ;;
++esac
++
++
++# Check whether --with-idnlib or --without-idnlib was given.
++if test "${with_idnlib+set}" = set; then
++ withval="$with_idnlib"
++ idnlib="$withval"
++else
++ idnlib="no"
++fi;
++if test "$idnlib" = yes; then
++ { { echo "$as_me:$LINENO: error: You must specify ARG for --with-idnlib." >&5
++echo "$as_me: error: You must specify ARG for --with-idnlib." >&2;}
++ { (exit 1); exit 1; }; }
++fi
++
++IDNLIBS=
++if test "$use_idn" != no; then
++
++cat >>confdefs.h <<\_ACEOF
++#define WITH_IDN 1
++_ACEOF
++
++ STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
++ if test "$idnlib" != no; then
++ IDNLIBS="$idnlib $iconvlib"
++ else
++ IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
++ fi
++fi
++
++
++
++for ac_header in locale.h
++do
++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++fi
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++else
++ # Is the header compilable?
++echo "$as_me:$LINENO: checking $ac_header usability" >&5
++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
++cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++#include "confdefs.h"
++$ac_includes_default
++#include <$ac_header>
++_ACEOF
++rm -f conftest.$ac_objext
++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
++ (eval $ac_compile) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest.$ac_objext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ ac_header_compiler=yes
++else
++ echo "$as_me: failed program was:" >&5
++cat conftest.$ac_ext >&5
++ac_header_compiler=no
++fi
++rm -f conftest.$ac_objext conftest.$ac_ext
++echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
++echo "${ECHO_T}$ac_header_compiler" >&6
++
++# Is the header present?
++echo "$as_me:$LINENO: checking $ac_header presence" >&5
++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
++cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++#include "confdefs.h"
++#include <$ac_header>
++_ACEOF
++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
++ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
++ ac_status=$?
++ egrep -v '^ *\+' conftest.er1 >conftest.err
++ rm -f conftest.er1
++ cat conftest.err >&5
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } >/dev/null; then
++ if test -s conftest.err; then
++ ac_cpp_err=$ac_c_preproc_warn_flag
++ else
++ ac_cpp_err=
++ fi
++else
++ ac_cpp_err=yes
++fi
++if test -z "$ac_cpp_err"; then
++ ac_header_preproc=yes
++else
++ echo "$as_me: failed program was:" >&5
++ cat conftest.$ac_ext >&5
++ ac_header_preproc=no
++fi
++rm -f conftest.err conftest.$ac_ext
++echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
++echo "${ECHO_T}$ac_header_preproc" >&6
++
++# So? What about this header?
++case $ac_header_compiler:$ac_header_preproc in
++ yes:no )
++ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
++ no:yes )
++ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
++esac
++echo "$as_me:$LINENO: checking for $ac_header" >&5
++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
++if eval "test \"\${$as_ac_Header+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ eval "$as_ac_Header=$ac_header_preproc"
++fi
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
++
++fi
++if test `eval echo '${'$as_ac_Header'}'` = yes; then
++ cat >>confdefs.h <<_ACEOF
++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++
++done
++
++
++for ac_func in setlocale
++do
++as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
++echo "$as_me:$LINENO: checking for $ac_func" >&5
++echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
++if eval "test \"\${$as_ac_var+set}\" = set"; then
++ echo $ECHO_N "(cached) $ECHO_C" >&6
++else
++ cat >conftest.$ac_ext <<_ACEOF
++#line $LINENO "configure"
++#include "confdefs.h"
++/* From autoconf 2.57 */
++/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
++ For example, HP-UX 11i <limits.h> declares gettimeofday. */
++#define $ac_func innocuous_$ac_func
++
++/* System header to define __stub macros and hopefully few prototypes,
++ which can conflict with char $ac_func (); below.
++ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
++ <limits.h> exists even on freestanding compilers. */
++
++#ifdef __STDC__
++# include <limits.h>
++#else
++# include <assert.h>
++#endif
++
++#undef $ac_func
++
++/* Override any gcc2 internal prototype to avoid an error. */
++#ifdef __cplusplus
++extern "C"
++{
++#endif
++/* We use char because int might match the return type of a gcc2
++ builtin and then its argument prototype would still apply. */
++char $ac_func ();
++/* The GNU C library defines this for functions which it implements
++ to always fail with ENOSYS. Some functions are actually named
++ something starting with __ and the normal name is an alias. */
++#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
++choke me
++#else
++char (*f) () = $ac_func;
++#endif
++#ifdef __cplusplus
++}
++#endif
++
++#ifdef F77_DUMMY_MAIN
++# ifdef __cplusplus
++ extern "C"
++# endif
++ int F77_DUMMY_MAIN() { return 1; }
++#endif
++int
++main ()
++{
++return f != $ac_func;
++ ;
++ return 0;
++}
++_ACEOF
++rm -f conftest.$ac_objext conftest$ac_exeext
++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
++ (eval $ac_link) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); } &&
++ { ac_try='test -s conftest$ac_exeext'
++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
++ (eval $ac_try) 2>&5
++ ac_status=$?
++ echo "$as_me:$LINENO: \$? = $ac_status" >&5
++ (exit $ac_status); }; }; then
++ eval "$as_ac_var=yes"
++else
++ echo "$as_me: failed program was:" >&5
++cat conftest.$ac_ext >&5
++eval "$as_ac_var=no"
++fi
++rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
++fi
++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5
++echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
++if test `eval echo '${'$as_ac_var'}'` = yes; then
++ cat >>confdefs.h <<_ACEOF
++#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
++_ACEOF
++
++fi
++done
++
++
++#
+ # Substitutions
+ #
+@@ -14063,4 +14373,5 @@
+ s,@XMLDCL@,$XMLDCL,;t t
+ s,@DOCBOOK2MANSPEC@,$DOCBOOK2MANSPEC,;t t
++s,@IDNLIBS@,$IDNLIBS,;t t
+ s,@BIND9_TOP_BUILDDIR@,$BIND9_TOP_BUILDDIR,;t t
+ s,@BIND9_ISC_BUILDINCLUDE@,$BIND9_ISC_BUILDINCLUDE,;t t
+--- ./configure.in.orig Tue May 13 12:50:02 2003
++++ ./configure.in Tue Jul 22 15:01:35 2003
+@@ -1686,4 +1686,80 @@
+
+ #
++# IDN support
++#
++AC_ARG_WITH(idn,
++ [ --with-idn[=MPREFIX] enable IDN support using idnkit [default PREFIX]],
++ use_idn="$withval", use_idn="no")
++case "$use_idn" in
++yes)
++ if test X$prefix = XNONE ; then
++ idn_path=/usr/local
++ else
++ idn_path=$prefix
++ fi
++ ;;
++no)
++ ;;
++*)
++ idn_path="$use_idn"
++ ;;
++esac
++
++iconvinc=
++iconvlib=
++AC_ARG_WITH(libiconv,
++ [ --with-libiconv[=IPREFIX] GNU libiconv are in IPREFIX [default PREFIX]],
++ use_libiconv="$withval", use_libiconv="no")
++case "$use_libiconv" in
++yes)
++ if test X$prefix = XNONE ; then
++ iconvlib="-L/usr/local/lib -R/usr/local/lib -liconv"
++ else
++ iconvlib="-L$prefix/lib -R$prefix/lib -liconv"
++ fi
++ ;;
++no)
++ iconvlib=
++ ;;
++*)
++ iconvlib="-L$use_libiconv/lib -R$use_libiconv/lib -liconv"
++ ;;
++esac
++
++AC_ARG_WITH(iconv,
++ [ --with-iconv[=LIBSPEC] specify iconv library [default -liconv]],
++ iconvlib="$withval")
++case "$iconvlib" in
++no)
++ iconvlib=
++ ;;
++yes)
++ iconvlib=-liconv
++ ;;
++esac
++
++AC_ARG_WITH(idnlib,
++ [ --with-idnlib=ARG specify libidnkit],
++ idnlib="$withval", idnlib="no")
++if test "$idnlib" = yes; then
++ AC_MSG_ERROR([You must specify ARG for --with-idnlib.])
++fi
++
++IDNLIBS=
++if test "$use_idn" != no; then
++ AC_DEFINE(WITH_IDN, 1, [define if idnkit support is to be included.])
++ STD_CINCLUDES="$STD_CINCLUDES -I$idn_path/include"
++ if test "$idnlib" != no; then
++ IDNLIBS="$idnlib $iconvlib"
++ else
++ IDNLIBS="-L$idn_path/lib -lidnkit $iconvlib"
++ fi
++fi
++AC_SUBST(IDNLIBS)
++
++AC_CHECK_HEADERS(locale.h)
++AC_CHECK_FUNCS(setlocale)
++
++#
+ # Substitutions
+ #