]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
9.2.7b1
authorMark Andrews <marka@isc.org>
Fri, 26 May 2006 03:53:38 +0000 (03:53 +0000)
committerMark Andrews <marka@isc.org>
Fri, 26 May 2006 03:53:38 +0000 (03:53 +0000)
contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.7-patch [new file with mode: 0644]

diff --git a/contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.7-patch b/contrib/idn/idnkit-1.0-src/patch/bind9/bind-9.2.7-patch
new file mode 100644 (file)
index 0000000..98c0607
--- /dev/null
@@ -0,0 +1,1269 @@
+IDN patch for bind-9.2.7
+========================
+
+
+This is a patch file for ISC BIND 9.2.7 to make it work with
+internationalized domain names.  With this patch you'll get IDN-aware
+dig/host/nslookup.
+
+To apply this patch, you should go to the top directory of the BIND
+distribution (where you see `README' file), then invoke `patch'
+command like this:
+
+       % patch -p0 < this-file
+
+Then follow the instructions described in `README.idnkit' to compile
+and install.
+
+
+Index: README.idnkit
+--- /dev/null  Fri May 26 13:45:50 2006
++++ README.idnkit      Fri May 26 12:50:53 2006
+@@ -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.2-patch,v 1.1.1.1 2003/06/04 00:27:32 marka Exp $
+Index: configure
+===================================================================
+RCS file: /proj/cvs/prod/bind9/configure,v
+retrieving revision 1.284.2.56
+diff -U2 -r1.284.2.56 configure
+--- configure  3 Mar 2006 03:32:29 -0000       1.284.2.56
++++ configure  26 May 2006 03:50:50 -0000
+@@ -466,5 +466,5 @@
+ #endif"
+-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS subdirs build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA STD_CINCLUDES STD_CDEFINES STD_CWARNINGS CCOPT AR ARFLAGS LN ETAGS PERL CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP ISC_SOCKADDR_LEN_T ISC_PLATFORM_HAVELONGLONG ISC_PLATFORM_NEEDSYSSELECTH LWRES_PLATFORM_NEEDSYSSELECTH DST_OPENSSL_INC DNS_OPENSSL_LIBS USE_OPENSSL USE_GSSAPI DST_GSSAPI_INC DNS_GSSAPI_LIBS ALWAYS_DEFINES ISC_PLATFORM_USETHREADS ISC_THREAD_DIR MKDEPCC MKDEPCFLAGS MKDEPPROG IRIX_DNSSEC_WARNINGS_HACK purify_path PURIFY LN_S ECHO ac_ct_AR STRIP ac_ct_STRIP CXX CXXFLAGS ac_ct_CXX CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL O A SA LIBTOOL_MKDEP_SED LIBTOOL_MODE_COMPILE LIBTOOL_MODE_INSTALL LIBTOOL_MODE_LINK LIBTOOL_ALLOW_UNDEFINED LIBTOOL_IN_MAIN LIBBIND ISC_PLATFORM_HAVEIPV6 LWRES_PLATFORM_HAVEIPV6 ISC_PLATFORM_NEEDNETINETIN6H LWRES_PLATFORM_NEEDNETINETIN6H ISC_PLATFORM_NEEDNETINET6IN6H LWRES_PLATFORM_NEEDNETINET6IN6H ISC_PLATFORM_HAVEINADDR6 LWRES_PLATFORM_HAVEINADDR6 ISC_PLATFORM_NEEDIN6ADDRANY LWRES_PLATFORM_NEEDIN6ADDRANY ISC_PLATFORM_NEEDIN6ADDRLOOPBACK LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK ISC_PLATFORM_HAVEIN6PKTINFO ISC_PLATFORM_FIXIN6ISADDR ISC_IPV6_H ISC_IPV6_O ISC_ISCIPV6_O ISC_IPV6_C LWRES_HAVE_SIN6_SCOPE_ID BUILD_CC BUILD_CFLAGS BUILD_CPPFLAGS BUILD_LDFLAGS BUILD_LIBS ISC_PLATFORM_NEEDNTOP ISC_PLATFORM_NEEDPTON ISC_PLATFORM_NEEDATON ISC_PLATFORM_HAVESALEN LWRES_PLATFORM_HAVESALEN ISC_PLATFORM_MSGHDRFLAVOR ISC_PLATFORM_NEEDPORTT ISC_LWRES_NEEDADDRINFO ISC_LWRES_NEEDRRSETINFO ISC_LWRES_SETHOSTENTINT ISC_LWRES_ENDHOSTENTINT ISC_LWRES_GETNETBYADDRINADDR ISC_LWRES_SETNETENTINT ISC_LWRES_ENDNETENTINT ISC_LWRES_GETHOSTBYADDRVOID ISC_LWRES_NEEDHERRNO ISC_LWRES_GETIPNODEPROTO ISC_LWRES_GETADDRINFOPROTO ISC_LWRES_GETNAMEINFOPROTO ISC_PLATFORM_NEEDSTRSEP ISC_PLATFORM_NEEDVSNPRINTF LWRES_PLATFORM_NEEDVSNPRINTF ISC_EXTRA_OBJS ISC_EXTRA_SRCS ISC_PLATFORM_QUADFORMAT LWRES_PLATFORM_QUADFORMAT ISC_PLATFORM_RLIMITTYPE ISC_PLATFORM_USEDECLSPEC LWRES_PLATFORM_USEDECLSPEC ISC_PLATFORM_BRACEPTHREADONCEINIT LATEX PDFLATEX XSLTPROC XMLLINT XSLT_DOCBOOK_STYLE_HTML XSLT_DOCBOOK_STYLE_XHTML XSLT_DOCBOOK_STYLE_MAN XSLT_DOCBOOK_CHUNK_HTML XSLT_DOCBOOK_CHUNK_XHTML XSLT_DB2LATEX_STYLE XSLT_DB2LATEX_ADMONITIONS BIND9_TOP_BUILDDIR BIND9_ISC_BUILDINCLUDE BIND9_ISCCC_BUILDINCLUDE BIND9_ISCCFG_BUILDINCLUDE BIND9_DNS_BUILDINCLUDE BIND9_LWRES_BUILDINCLUDE BIND9_VERSION LIBOBJS LTLIBOBJS'
++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS subdirs build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA STD_CINCLUDES STD_CDEFINES STD_CWARNINGS CCOPT AR ARFLAGS LN ETAGS PERL CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP ISC_SOCKADDR_LEN_T ISC_PLATFORM_HAVELONGLONG ISC_PLATFORM_NEEDSYSSELECTH LWRES_PLATFORM_NEEDSYSSELECTH DST_OPENSSL_INC DNS_OPENSSL_LIBS USE_OPENSSL USE_GSSAPI DST_GSSAPI_INC DNS_GSSAPI_LIBS ALWAYS_DEFINES ISC_PLATFORM_USETHREADS ISC_THREAD_DIR MKDEPCC MKDEPCFLAGS MKDEPPROG IRIX_DNSSEC_WARNINGS_HACK purify_path PURIFY LN_S ECHO ac_ct_AR STRIP ac_ct_STRIP CXX CXXFLAGS ac_ct_CXX CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL O A SA LIBTOOL_MKDEP_SED LIBTOOL_MODE_COMPILE LIBTOOL_MODE_INSTALL LIBTOOL_MODE_LINK LIBTOOL_ALLOW_UNDEFINED LIBTOOL_IN_MAIN LIBBIND ISC_PLATFORM_HAVEIPV6 LWRES_PLATFORM_HAVEIPV6 ISC_PLATFORM_NEEDNETINETIN6H LWRES_PLATFORM_NEEDNETINETIN6H ISC_PLATFORM_NEEDNETINET6IN6H LWRES_PLATFORM_NEEDNETINET6IN6H ISC_PLATFORM_HAVEINADDR6 LWRES_PLATFORM_HAVEINADDR6 ISC_PLATFORM_NEEDIN6ADDRANY LWRES_PLATFORM_NEEDIN6ADDRANY ISC_PLATFORM_NEEDIN6ADDRLOOPBACK LWRES_PLATFORM_NEEDIN6ADDRLOOPBACK ISC_PLATFORM_HAVEIN6PKTINFO ISC_PLATFORM_FIXIN6ISADDR ISC_IPV6_H ISC_IPV6_O ISC_ISCIPV6_O ISC_IPV6_C LWRES_HAVE_SIN6_SCOPE_ID BUILD_CC BUILD_CFLAGS BUILD_CPPFLAGS BUILD_LDFLAGS BUILD_LIBS ISC_PLATFORM_NEEDNTOP ISC_PLATFORM_NEEDPTON ISC_PLATFORM_NEEDATON ISC_PLATFORM_HAVESALEN LWRES_PLATFORM_HAVESALEN ISC_PLATFORM_MSGHDRFLAVOR ISC_PLATFORM_NEEDPORTT ISC_LWRES_NEEDADDRINFO ISC_LWRES_NEEDRRSETINFO ISC_LWRES_SETHOSTENTINT ISC_LWRES_ENDHOSTENTINT ISC_LWRES_GETNETBYADDRINADDR ISC_LWRES_SETNETENTINT ISC_LWRES_ENDNETENTINT ISC_LWRES_GETHOSTBYADDRVOID ISC_LWRES_NEEDHERRNO ISC_LWRES_GETIPNODEPROTO ISC_LWRES_GETADDRINFOPROTO ISC_LWRES_GETNAMEINFOPROTO ISC_PLATFORM_NEEDSTRSEP ISC_PLATFORM_NEEDVSNPRINTF LWRES_PLATFORM_NEEDVSNPRINTF ISC_EXTRA_OBJS ISC_EXTRA_SRCS ISC_PLATFORM_QUADFORMAT LWRES_PLATFORM_QUADFORMAT ISC_PLATFORM_RLIMITTYPE ISC_PLATFORM_USEDECLSPEC LWRES_PLATFORM_USEDECLSPEC ISC_PLATFORM_BRACEPTHREADONCEINIT LATEX PDFLATEX XSLTPROC XMLLINT XSLT_DOCBOOK_STYLE_HTML XSLT_DOCBOOK_STYLE_XHTML XSLT_DOCBOOK_STYLE_MAN XSLT_DOCBOOK_CHUNK_HTML XSLT_DOCBOOK_CHUNK_XHTML XSLT_DB2LATEX_STYLE XSLT_DB2LATEX_ADMONITIONS IDNLIBS BIND9_TOP_BUILDDIR BIND9_ISC_BUILDINCLUDE BIND9_ISCCC_BUILDINCLUDE BIND9_ISCCFG_BUILDINCLUDE BIND9_DNS_BUILDINCLUDE BIND9_LWRES_BUILDINCLUDE BIND9_VERSION LIBOBJS LTLIBOBJS'
+ ac_subst_files='BIND9_INCLUDES BIND9_MAKE_RULES LIBISC_API LIBISCCC_API LIBISCCFG_API LIBDNS_API LIBLWRES_API'
+@@ -1048,4 +1048,8 @@
+                           include additional configurations [automatic]
+   --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:
+@@ -8268,5 +8272,5 @@
+ *-*-irix6*)
+   # Find out which ABI we are using.
+-  echo '#line 8270 "configure"' > conftest.$ac_ext
++  echo '#line 8274 "configure"' > conftest.$ac_ext
+   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+   (eval $ac_compile) 2>&5
+@@ -9265,5 +9269,5 @@
+ # Provide some information about the compiler.
+-echo "$as_me:9267:" \
++echo "$as_me:9271:" \
+      "checking for Fortran 77 compiler version" >&5
+ ac_compiler=`set X $ac_compile; echo $2`
+@@ -10326,9 +10330,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:10328: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:10332: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>conftest.err)
+    ac_status=$?
+    cat conftest.err >&5
+-   echo "$as_me:10332: \$? = $ac_status" >&5
++   echo "$as_me:10336: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s "$ac_outfile"; then
+      # The compiler can only warn and ignore the option if not recognized
+@@ -10569,9 +10573,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:10571: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:10575: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>conftest.err)
+    ac_status=$?
+    cat conftest.err >&5
+-   echo "$as_me:10575: \$? = $ac_status" >&5
++   echo "$as_me:10579: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s "$ac_outfile"; then
+      # The compiler can only warn and ignore the option if not recognized
+@@ -10629,9 +10633,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:10631: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:10635: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>out/conftest.err)
+    ac_status=$?
+    cat out/conftest.err >&5
+-   echo "$as_me:10635: \$? = $ac_status" >&5
++   echo "$as_me:10639: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s out/conftest2.$ac_objext
+    then
+@@ -12814,5 +12818,5 @@
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<EOF
+-#line 12816 "configure"
++#line 12820 "configure"
+ #include "confdefs.h"
+@@ -12912,5 +12916,5 @@
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<EOF
+-#line 12914 "configure"
++#line 12918 "configure"
+ #include "confdefs.h"
+@@ -15109,9 +15113,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:15111: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:15115: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>conftest.err)
+    ac_status=$?
+    cat conftest.err >&5
+-   echo "$as_me:15115: \$? = $ac_status" >&5
++   echo "$as_me:15119: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s "$ac_outfile"; then
+      # The compiler can only warn and ignore the option if not recognized
+@@ -15169,9 +15173,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:15171: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:15175: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>out/conftest.err)
+    ac_status=$?
+    cat out/conftest.err >&5
+-   echo "$as_me:15175: \$? = $ac_status" >&5
++   echo "$as_me:15179: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s out/conftest2.$ac_objext
+    then
+@@ -16530,5 +16534,5 @@
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<EOF
+-#line 16532 "configure"
++#line 16536 "configure"
+ #include "confdefs.h"
+@@ -16628,5 +16632,5 @@
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<EOF
+-#line 16630 "configure"
++#line 16634 "configure"
+ #include "confdefs.h"
+@@ -17465,9 +17469,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:17467: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:17471: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>conftest.err)
+    ac_status=$?
+    cat conftest.err >&5
+-   echo "$as_me:17471: \$? = $ac_status" >&5
++   echo "$as_me:17475: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s "$ac_outfile"; then
+      # The compiler can only warn and ignore the option if not recognized
+@@ -17525,9 +17529,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:17527: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:17531: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>out/conftest.err)
+    ac_status=$?
+    cat out/conftest.err >&5
+-   echo "$as_me:17531: \$? = $ac_status" >&5
++   echo "$as_me:17535: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s out/conftest2.$ac_objext
+    then
+@@ -19564,9 +19568,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:19566: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:19570: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>conftest.err)
+    ac_status=$?
+    cat conftest.err >&5
+-   echo "$as_me:19570: \$? = $ac_status" >&5
++   echo "$as_me:19574: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s "$ac_outfile"; then
+      # The compiler can only warn and ignore the option if not recognized
+@@ -19807,9 +19811,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:19809: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:19813: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>conftest.err)
+    ac_status=$?
+    cat conftest.err >&5
+-   echo "$as_me:19813: \$? = $ac_status" >&5
++   echo "$as_me:19817: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s "$ac_outfile"; then
+      # The compiler can only warn and ignore the option if not recognized
+@@ -19867,9 +19871,9 @@
+    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+    -e 's:$: $lt_compiler_flag:'`
+-   (eval echo "\"\$as_me:19869: $lt_compile\"" >&5)
++   (eval echo "\"\$as_me:19873: $lt_compile\"" >&5)
+    (eval "$lt_compile" 2>out/conftest.err)
+    ac_status=$?
+    cat out/conftest.err >&5
+-   echo "$as_me:19873: \$? = $ac_status" >&5
++   echo "$as_me:19877: \$? = $ac_status" >&5
+    if (exit $ac_status) && test -s out/conftest2.$ac_objext
+    then
+@@ -22052,5 +22056,5 @@
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<EOF
+-#line 22054 "configure"
++#line 22058 "configure"
+ #include "confdefs.h"
+@@ -22150,5 +22154,5 @@
+   lt_status=$lt_dlunknown
+   cat > conftest.$ac_ext <<EOF
+-#line 22152 "configure"
++#line 22156 "configure"
+ #include "confdefs.h"
+@@ -26648,4 +26652,354 @@
+ #
++# 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
++/* confdefs.h.  */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end 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>conftest.er1
++  ac_status=$?
++  grep -v '^ *+' conftest.er1 >conftest.err
++  rm -f conftest.er1
++  cat conftest.err >&5
++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
++  (exit $ac_status); } &&
++       { ac_try='test -z "$ac_c_werror_flag"
++                       || test ! -s conftest.err'
++  { (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); }; } &&
++       { 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
++sed 's/^/| /' conftest.$ac_ext >&5
++
++ac_header_compiler=no
++fi
++rm -f conftest.err 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
++/* confdefs.h.  */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end 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=$?
++  grep -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
++    ac_cpp_err=$ac_cpp_err$ac_c_werror_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
++sed 's/^/| /' 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:$ac_c_preproc_warn_flag 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 compiler's result" >&5
++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
++    ac_header_preproc=yes
++    ;;
++  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: see the Autoconf documentation" >&5
++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
++    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
++echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&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;}
++    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
++    (
++      cat <<\_ASBOX
++## ------------------------------------------ ##
++## Report this to the AC_PACKAGE_NAME lists.  ##
++## ------------------------------------------ ##
++_ASBOX
++    ) |
++      sed "s/^/$as_me: WARNING:     /" >&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
++/* confdefs.h.  */
++_ACEOF
++cat confdefs.h >>conftest.$ac_ext
++cat >>conftest.$ac_ext <<_ACEOF
++/* end confdefs.h.  */
++/* 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
++
++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>conftest.er1
++  ac_status=$?
++  grep -v '^ *+' conftest.er1 >conftest.err
++  rm -f conftest.er1
++  cat conftest.err >&5
++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
++  (exit $ac_status); } &&
++       { ac_try='test -z "$ac_c_werror_flag"
++                       || test ! -s conftest.err'
++  { (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); }; } &&
++       { 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
++sed 's/^/| /' conftest.$ac_ext >&5
++
++eval "$as_ac_var=no"
++fi
++rm -f conftest.err 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
+ #
+@@ -27521,4 +27875,5 @@
+ s,@XSLT_DB2LATEX_STYLE@,$XSLT_DB2LATEX_STYLE,;t t
+ s,@XSLT_DB2LATEX_ADMONITIONS@,$XSLT_DB2LATEX_ADMONITIONS,;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
+Index: configure.in
+===================================================================
+RCS file: /proj/cvs/prod/bind9/configure.in,v
+retrieving revision 1.294.2.61
+diff -U2 -r1.294.2.61 configure.in
+--- configure.in       3 Mar 2006 03:29:45 -0000       1.294.2.61
++++ configure.in       26 May 2006 03:50:53 -0000
+@@ -1792,4 +1792,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
+ #
+Index: config.h.in
+===================================================================
+RCS file: /proj/cvs/prod/bind9/config.h.in,v
+retrieving revision 1.47.2.21
+diff -U2 -r1.47.2.21 config.h.in
+--- config.h.in        1 Mar 2006 02:49:40 -0000       1.47.2.21
++++ config.h.in        26 May 2006 03:50:53 -0000
+@@ -17,5 +17,5 @@
+  */
+-/* $Id: config.h.in,v 1.47.2.21 2006/03/01 02:49:40 marka Exp $ */
++/* $Id: acconfig.h,v 1.35.2.10 2004/12/04 06:44:36 marka Exp $ */
+ /***
+@@ -181,4 +181,7 @@
+ #undef HAVE_LINUX_CAPABILITY_H
++/* Define to 1 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
+@@ -187,4 +190,7 @@
+ #undef HAVE_RSA_GENERATE_KEY
++/* Define to 1 if you have the `setlocale' function. */
++#undef HAVE_SETLOCALE
++
+ /* Define to 1 if you have the <stdint.h> header file. */
+ #undef HAVE_STDINT_H
+@@ -255,4 +261,7 @@
+ #undef USE_FIONBIO_IOCTL
++/* define if idnkit support is to be included. */
++#undef WITH_IDN
++
+ /* Define to 1 if your processor stores words with the most significant byte
+    first (like Motorola and SPARC, unlike Intel and VAX). */
+Index: bin/dig/Makefile.in
+===================================================================
+RCS file: /proj/cvs/prod/bind9/bin/dig/Makefile.in,v
+retrieving revision 1.25.2.4
+diff -U2 -r1.25.2.4 Makefile.in
+--- bin/dig/Makefile.in        18 Aug 2004 23:22:52 -0000      1.25.2.4
++++ bin/dig/Makefile.in        26 May 2006 03:50:53 -0000
+@@ -37,5 +37,5 @@
+ DEPLIBS =     ${DNSDEPLIBS} ${ISCDEPLIBS}
+-LIBS =                ${DNSLIBS} ${ISCLIBS} @LIBS@
++LIBS =                ${DNSLIBS} ${ISCLIBS} @IDNLIBS@ @LIBS@
+ SUBDIRS =
+Index: bin/dig/dig.1
+===================================================================
+RCS file: /proj/cvs/prod/bind9/bin/dig/dig.1,v
+retrieving revision 1.14.2.9
+diff -U2 -r1.14.2.9 dig.1
+--- bin/dig/dig.1      13 Oct 2005 02:23:26 -0000      1.14.2.9
++++ bin/dig/dig.1      26 May 2006 03:50:54 -0000
+@@ -14,5 +14,5 @@
+ .\" PERFORMANCE OF THIS SOFTWARE.
+ .\"
+-.\" $Id: dig.1,v 1.14.2.9 2005/10/13 02:23:26 marka Exp $
++.\" $Id$
+ .\"
+ .hy 0
+@@ -364,4 +364,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
+Index: bin/dig/dig.docbook
+===================================================================
+RCS file: /proj/cvs/prod/bind9/bin/dig/dig.docbook,v
+retrieving revision 1.4.2.11
+diff -U2 -r1.4.2.11 dig.docbook
+--- bin/dig/dig.docbook        12 May 2005 21:35:06 -0000      1.4.2.11
++++ bin/dig/dig.docbook        26 May 2006 03:50:55 -0000
+@@ -547,4 +547,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>
+Index: bin/dig/dighost.c
+===================================================================
+RCS file: /proj/cvs/prod/bind9/bin/dig/dighost.c,v
+retrieving revision 1.221.2.29
+diff -U2 -r1.221.2.29 dighost.c
+--- bin/dig/dighost.c  14 Oct 2005 01:37:48 -0000      1.221.2.29
++++ bin/dig/dighost.c  26 May 2006 03:50:59 -0000
+@@ -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>
+@@ -134,4 +145,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.
+@@ -732,4 +755,8 @@
+       }
++#ifdef WITH_IDN
++      initialize_idn();
++#endif
++
+       if (keyfile[0] != 0)
+               setup_file_key();
+@@ -1255,4 +1282,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);
+@@ -1283,4 +1318,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
+@@ -1291,4 +1337,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 */
+@@ -1296,5 +1349,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,
+@@ -1341,4 +1416,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);
+@@ -1348,4 +1432,5 @@
+                                                  ISC_FALSE,
+                                                  &lookup->namebuf);
++#endif
+               }
+               if (result != ISC_R_SUCCESS) {
+@@ -2863,2 +2948,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 */
+Index: bin/dig/host.1
+===================================================================
+RCS file: /proj/cvs/prod/bind9/bin/dig/host.1,v
+retrieving revision 1.11.2.5
+diff -U2 -r1.11.2.5 host.1
+--- bin/dig/host.1     13 Oct 2005 02:23:26 -0000      1.11.2.5
++++ bin/dig/host.1     26 May 2006 03:51:00 -0000
+@@ -14,5 +14,5 @@
+ .\" PERFORMANCE OF THIS SOFTWARE.
+ .\"
+-.\" $Id: host.1,v 1.11.2.5 2005/10/13 02:23:26 marka Exp $
++.\" $Id$
+ .\"
+ .hy 0
+@@ -165,4 +165,15 @@
+ \fBhost\fR
+ 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 "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
+Index: bin/dig/host.docbook
+===================================================================
+RCS file: /proj/cvs/prod/bind9/bin/dig/host.docbook,v
+retrieving revision 1.2.2.5
+diff -U2 -r1.2.2.5 host.docbook
+--- bin/dig/host.docbook       12 May 2005 21:35:06 -0000      1.2.2.5
++++ bin/dig/host.docbook       26 May 2006 03:51:00 -0000
+@@ -199,4 +199,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>
+Index: lib/dns/name.c
+===================================================================
+RCS file: /proj/cvs/prod/bind9/lib/dns/name.c,v
+retrieving revision 1.127.2.14
+diff -U2 -r1.127.2.14 name.c
+--- lib/dns/name.c     2 Mar 2006 00:37:17 -0000       1.127.2.14
++++ lib/dns/name.c     26 May 2006 03:51:04 -0000
+@@ -199,4 +199,11 @@
+ dns_fullname_hash(dns_name_t *name, isc_boolean_t case_sensitive);
++#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,
+@@ -1715,4 +1722,7 @@
+       isc_boolean_t saw_root = ISC_FALSE;
+       char num[4];
++#ifdef WITH_IDN
++      unsigned int oused = target->used;
++#endif
+       /*
+@@ -1895,4 +1905,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);
+ }
+@@ -3363,2 +3377,8 @@
+ }
++#ifdef WITH_IDN
++void
++dns_name_settotextfilter(dns_name_totextfilter_t proc) {
++      totext_filter_proc = proc;
++}
++#endif
+Index: lib/dns/include/dns/name.h
+===================================================================
+RCS file: /proj/cvs/prod/bind9/lib/dns/include/dns/name.h,v
+retrieving revision 1.95.2.11
+diff -U2 -r1.95.2.11 name.h
+--- lib/dns/include/dns/name.h 2 Mar 2006 00:37:17 -0000       1.95.2.11
++++ lib/dns/include/dns/name.h 26 May 2006 03:51:06 -0000
+@@ -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
+@@ -1266,4 +1277,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)
+ /*