- minor next improvements on autotools patch
- dig and host utilities now using libidn instead idnkit for IDN support
This commit is contained in:
parent
62e2c7cd2c
commit
3416d0c170
@ -1,24 +0,0 @@
|
||||
--- bind-9.4.0/bin/dig/Makefile.in.idn 2007-04-16 15:46:29.000000000 +0200
|
||||
+++ bind-9.4.0/bin/dig/Makefile.in 2007-04-16 15:50:24.000000000 +0200
|
||||
@@ -24,7 +24,7 @@
|
||||
@BIND9_MAKE_INCLUDES@
|
||||
|
||||
CINCLUDES = -I${srcdir}/include ${DNS_INCLUDES} ${BIND9_INCLUDES} \
|
||||
- ${ISC_INCLUDES} ${LWRES_INCLUDES}
|
||||
+ ${ISC_INCLUDES} ${LWRES_INCLUDES} -I../../contrib/idn/idnkit-1.0-src/include
|
||||
|
||||
CDEFINES = -DVERSION=\"${VERSION}\"
|
||||
CWARNINGS =
|
||||
@@ -42,10 +42,10 @@
|
||||
LWRESDEPLIBS = ../../lib/lwres/liblwres.@A@
|
||||
|
||||
DEPLIBS = ${DNSDEPLIBS} ${BIND9DEPLIBS} ${ISCDEPLIBS} ${ISCCFGDEPLIBS} \
|
||||
- ${LWRESDEPLIBS}
|
||||
+ ${LWRESDEPLIBS}
|
||||
|
||||
LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCLIBS} \
|
||||
- ${ISCCFGLIBS} @IDNLIBS@ @LIBS@
|
||||
+ ${ISCCFGLIBS} ../../contrib/idn/idnkit-1.0-src/lib/libidnkit.la @LIBS@
|
||||
|
||||
SUBDIRS =
|
||||
|
@ -1,834 +0,0 @@
|
||||
--- idnkit-1.0-src/map/Makefile.am.autotools 2007-04-16 13:40:22.000000000 +0200
|
||||
+++ idnkit-1.0-src/map/Makefile.am 2007-04-16 12:51:15.000000000 +0200
|
||||
@@ -0,0 +1,2 @@
|
||||
+map_DATA = \
|
||||
+ jp.map
|
||||
--- idnkit-1.0-src/Makefile.am.autotools 2007-04-16 13:39:09.000000000 +0200
|
||||
+++ idnkit-1.0-src/Makefile.am 2007-04-15 17:24:51.000000000 +0200
|
||||
@@ -0,0 +1,6 @@
|
||||
+SUBDIRS = \
|
||||
+ include \
|
||||
+ lib \
|
||||
+ man \
|
||||
+ tools \
|
||||
+ map
|
||||
--- idnkit-1.0-src/tools/Makefile.am.autotools 2007-04-16 13:40:02.000000000 +0200
|
||||
+++ idnkit-1.0-src/tools/Makefile.am 2007-04-16 12:03:20.000000000 +0200
|
||||
@@ -0,0 +1,3 @@
|
||||
+SUBDIRS = \
|
||||
+ idnconv \
|
||||
+ runidn
|
||||
--- idnkit-1.0-src/tools/runidn/Makefile.am.autotools 2007-04-16 13:40:05.000000000 +0200
|
||||
+++ idnkit-1.0-src/tools/runidn/Makefile.am 2007-04-16 13:17:17.000000000 +0200
|
||||
@@ -0,0 +1,35 @@
|
||||
+if RUNIDN
|
||||
+bin_SCRIPTS =
|
||||
+man1_MANS =
|
||||
+noinst_LTLIBRARIES = libidnkitres.la
|
||||
+
|
||||
+libidnkitres_la_SOURCES = \
|
||||
+ resolver.lo stub.lo
|
||||
+
|
||||
+AM_CPPFLAGS = \
|
||||
+ -DFOR_RUNIDN \
|
||||
+ -I$(top_srcdir)/include \
|
||||
+ $(ICONVINC)
|
||||
+
|
||||
+libidnkitres_la_LIBADD = \
|
||||
+ $(top_srcdir)/lib/libidnkit.la \
|
||||
+ $(LIBDL)
|
||||
+
|
||||
+AM_LDFLAGS = \
|
||||
+ -version-number 1:0:1
|
||||
+
|
||||
+if COMPAT
|
||||
+bin_SCRIPTS += runmdn
|
||||
+man1_MANS += runmdn.1
|
||||
+else
|
||||
+bin_SCRIPTS += runidn
|
||||
+man1_MANS += runidn.1
|
||||
+endif
|
||||
+
|
||||
+runmdn: runidn
|
||||
+ cp -f runidn runmdn
|
||||
+
|
||||
+runmdn.1: runidn.1
|
||||
+ cp -f runidn.1 runmdn.1
|
||||
+
|
||||
+endif
|
||||
--- idnkit-1.0-src/tools/idnconv/Makefile.am.autotools 2007-04-16 13:40:08.000000000 +0200
|
||||
+++ idnkit-1.0-src/tools/idnconv/Makefile.am 2007-04-16 13:35:51.000000000 +0200
|
||||
@@ -0,0 +1,29 @@
|
||||
+if ! LITEONLY
|
||||
+bin_PROGRAMS =
|
||||
+man1_MANS =
|
||||
+if COMPAT
|
||||
+bin_PROGRAMS += mdnconva
|
||||
+man1_MANS += mdnconv.1
|
||||
+else
|
||||
+bin_PROGRAMS += idnconv
|
||||
+man1_MANS += idnconv.1
|
||||
+endif
|
||||
+
|
||||
+idnconv_SOURCES = \
|
||||
+ idnconv.c \
|
||||
+ util.c \
|
||||
+ selectiveencode.c
|
||||
+
|
||||
+AM_CPPFLAGS = \
|
||||
+ -I$(top_srcdir)/include \
|
||||
+ $(ICONVINC)
|
||||
+
|
||||
+idnconv_LDADD = \
|
||||
+ $(top_srcdir)/lib/libidnkit.la
|
||||
+
|
||||
+mdnconv: idnconv
|
||||
+ cp -f idnconv$(EXEEXT) mdnconv$(EXEEXT)
|
||||
+
|
||||
+mdnconv.1: idnconv.1
|
||||
+ cp -f idnconv.1 mdnconv.1
|
||||
+endif
|
||||
--- idnkit-1.0-src/lib/Makefile.am.autotools 2007-04-16 13:39:47.000000000 +0200
|
||||
+++ idnkit-1.0-src/lib/Makefile.am 2007-04-16 13:11:02.000000000 +0200
|
||||
@@ -0,0 +1,85 @@
|
||||
+noinst_LTLIBRARIES = libidnkitlite.la
|
||||
+if ! LITEONLY
|
||||
+noinst_LTLIBRARIES += libidnkit.la
|
||||
+endif
|
||||
+
|
||||
+AM_CPPFLAGS = \
|
||||
+ -I$(top_srcdir)/include \
|
||||
+ $(ICONVINC) \
|
||||
+ -DIDN_RESCONF_DIR="\"$(sysconfdir)\""
|
||||
+
|
||||
+AM_LDFLAGS = \
|
||||
+ -version-number 1:0:2
|
||||
+
|
||||
+libidnkitlite_la_SOURCES = \
|
||||
+ aliaslist.c \
|
||||
+ api.c \
|
||||
+ checker.c \
|
||||
+ converter.c \
|
||||
+ debug.c \
|
||||
+ delimitermap.c \
|
||||
+ filechecker.c \
|
||||
+ filemapper.c \
|
||||
+ log.c \
|
||||
+ mapper.c \
|
||||
+ mapselector.c \
|
||||
+ nameprep.c \
|
||||
+ normalizer.c \
|
||||
+ punycode.c \
|
||||
+ race.c \
|
||||
+ res.c \
|
||||
+ resconf.c \
|
||||
+ result.c \
|
||||
+ strhash.c \
|
||||
+ ucsmap.c \
|
||||
+ ucsset.c \
|
||||
+ unicode.c \
|
||||
+ unormalize.c \
|
||||
+ ucs4.c \
|
||||
+ utf8.c \
|
||||
+ util.c \
|
||||
+ version.c
|
||||
+
|
||||
+libidnkitlite_la_CPPFLAGS = \
|
||||
+ -DWITHOUT_ICONV
|
||||
+
|
||||
+if ! LITEONLY
|
||||
+libidnkit_la_SOURCES = \
|
||||
+ aliaslist.c \
|
||||
+ api.c \
|
||||
+ checker.c \
|
||||
+ converter.c \
|
||||
+ debug.c \
|
||||
+ delimitermap.c \
|
||||
+ filechecker.c \
|
||||
+ filemapper.c \
|
||||
+ localencoding.c \
|
||||
+ log.c \
|
||||
+ mapper.c \
|
||||
+ mapselector.c \
|
||||
+ nameprep.c \
|
||||
+ normalizer.c \
|
||||
+ punycode.c \
|
||||
+ race.c \
|
||||
+ res.c \
|
||||
+ resconf.c \
|
||||
+ result.c \
|
||||
+ strhash.c \
|
||||
+ ucs4.c \
|
||||
+ ucsmap.c \
|
||||
+ ucsset.c \
|
||||
+ unicode.c \
|
||||
+ unormalize.c \
|
||||
+ utf8.c \
|
||||
+ util.c \
|
||||
+ version.c
|
||||
+endif
|
||||
+
|
||||
+sys_DATA = idn.conf idnalias.conf
|
||||
+
|
||||
+idn.conf: idn.conf.sample.in
|
||||
+ sed -e 's%[@]mapdir[@]%$(datadir)/idnkit%' < idn.conf.sample.in > $@
|
||||
+
|
||||
+idnalias.conf: Makefile
|
||||
+ $(SHELL) aliaslist.sh $(build) $(UTF8_NAME) > $@
|
||||
+
|
||||
--- idnkit-1.0-src/include/Makefile.am.autotools 2007-04-16 13:39:19.000000000 +0200
|
||||
+++ idnkit-1.0-src/include/Makefile.am 2007-04-15 17:25:36.000000000 +0200
|
||||
@@ -0,0 +1,3 @@
|
||||
+SUBDIRS = \
|
||||
+ idn \
|
||||
+ mdn
|
||||
--- idnkit-1.0-src/include/mdn/Makefile.am.autotools 2007-04-16 13:39:35.000000000 +0200
|
||||
+++ idnkit-1.0-src/include/mdn/Makefile.am 2007-04-15 17:28:26.000000000 +0200
|
||||
@@ -0,0 +1,10 @@
|
||||
+if COMPAT
|
||||
+mdn_HEADERS = \
|
||||
+ api.h \
|
||||
+ log.h \
|
||||
+ res.h \
|
||||
+ resconf.h \
|
||||
+ result.h \
|
||||
+ utf8.h \
|
||||
+ version.h
|
||||
+endif
|
||||
--- idnkit-1.0-src/include/idn/Makefile.am.autotools 2007-04-16 13:39:24.000000000 +0200
|
||||
+++ idnkit-1.0-src/include/idn/Makefile.am 2007-04-15 17:27:12.000000000 +0200
|
||||
@@ -0,0 +1,32 @@
|
||||
+idn_HEADERS = \
|
||||
+ api.h \
|
||||
+ assert.h \
|
||||
+ checker.h \
|
||||
+ converter.h \
|
||||
+ debug.h \
|
||||
+ delimitermap.h \
|
||||
+ export.h \
|
||||
+ filechecker.h \
|
||||
+ filemapper.h \
|
||||
+ localencoding.h \
|
||||
+ log.h \
|
||||
+ logmacro.h \
|
||||
+ mapper.h \
|
||||
+ mapselector.h \
|
||||
+ nameprep.h \
|
||||
+ normalizer.h \
|
||||
+ punycode.h \
|
||||
+ race.h \
|
||||
+ res.h \
|
||||
+ resconf.h \
|
||||
+ result.h \
|
||||
+ strhash.h \
|
||||
+ ucsmap.h \
|
||||
+ ucsset.h \
|
||||
+ unicode.h \
|
||||
+ unormalize.h \
|
||||
+ ucs4.h \
|
||||
+ utf8.h \
|
||||
+ util.h \
|
||||
+ version.h
|
||||
+
|
||||
--- idnkit-1.0-src/configure.ac.autotools 2007-04-16 13:39:01.000000000 +0200
|
||||
+++ idnkit-1.0-src/configure.ac 2007-04-16 13:32:59.000000000 +0200
|
||||
@@ -0,0 +1,553 @@
|
||||
+dnl $Id: configure.in,v 1.1.1.1 2003/06/04 00:25:25 marka Exp $
|
||||
+dnl Process this file with autoconf to produce a configure script.
|
||||
+dnl
|
||||
+dnl Copyright (c) 2000 Japan Network Information Center. All rights reserved.
|
||||
+dnl
|
||||
+dnl By using this file, you agree to the terms and conditions set forth bellow.
|
||||
+dnl
|
||||
+dnl LICENSE TERMS AND CONDITIONS
|
||||
+dnl
|
||||
+dnl The following License Terms and Conditions apply, unless a different
|
||||
+dnl license is obtained from Japan Network Information Center ("JPNIC"),
|
||||
+dnl a Japanese association, Kokusai-Kougyou-Kanda Bldg 6F, 2-3-4 Uchi-Kanda,
|
||||
+dnl Chiyoda-ku, Tokyo 101-0047, Japan.
|
||||
+dnl
|
||||
+dnl 1. Use, Modification and Redistribution (including distribution of any
|
||||
+dnl modified or derived work) in source and/or binary forms is permitted
|
||||
+dnl under this License Terms and Conditions.
|
||||
+dnl
|
||||
+dnl 2. Redistribution of source code must retain the copyright notices as they
|
||||
+dnl appear in each source code file, this License Terms and Conditions.
|
||||
+dnl
|
||||
+dnl 3. Redistribution in binary form must reproduce the Copyright Notice,
|
||||
+dnl this License Terms and Conditions, in the documentation and/or other
|
||||
+dnl materials provided with the distribution. For the purposes of binary
|
||||
+dnl distribution the "Copyright Notice" refers to the following language:
|
||||
+dnl "Copyright (c) 2000-2002 Japan Network Information Center. All rights reserved."
|
||||
+dnl
|
||||
+dnl 4. The name of JPNIC may not be used to endorse or promote products
|
||||
+dnl derived from this Software without specific prior written approval of
|
||||
+dnl JPNIC.
|
||||
+dnl
|
||||
+dnl 5. Disclaimer/Limitation of Liability: THIS SOFTWARE IS PROVIDED BY JPNIC
|
||||
+dnl "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
+dnl LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
+dnl PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JPNIC BE LIABLE
|
||||
+dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
+dnl CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
+dnl SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
+dnl BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
+dnl WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
+dnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
+dnl ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
+
|
||||
+AC_PREREQ(2.59)
|
||||
+AC_INIT([idnkit], [1.0], [bind9-bugs@isc.org])
|
||||
+AM_INIT_AUTOMAKE([foreign -Wall -Werror])
|
||||
+
|
||||
+idndir="$includedir/idn"
|
||||
+mdndir="$includedir/mdn"
|
||||
+sysdir="$sysconfdir"
|
||||
+mapdir="$datadir/idnkit"
|
||||
+AC_SUBST(idndir)
|
||||
+AC_SUBST(mdndir)
|
||||
+AC_SUBST(sysdir)
|
||||
+AC_SUBST(mapdir)
|
||||
+
|
||||
+AC_ARG_ENABLE([debug],
|
||||
+ AS_HELP_STRING([--enable-debug], [enable debug codes [default=no]]),
|
||||
+ [debug=$enableval], [debug=no])
|
||||
+if test "$debug" = "yes"; then
|
||||
+ CFLAGS="$CFLAGS -DDEBUG"
|
||||
+fi
|
||||
+
|
||||
+AC_ARG_ENABLE([mdnkit-compat],
|
||||
+ AS_HELP_STRING([--enable-mdnkit-compat], [enable mDNkit compatibility mode [default=no]]),
|
||||
+ [mdnkit_compat=$enableval], [mdnkit_compat=no])
|
||||
+if test "$mdnkit_compat" = "yes"; then
|
||||
+ AC_DEFINE(ENABLE_MDNKIT_COMPAT, 1, [--enable-mdnkit-compat is specified])
|
||||
+fi
|
||||
+AM_CONDITIONAL(COMPAT, [test "$mdnkit_compat" = "yes"])
|
||||
+
|
||||
+AC_ARG_ENABLE([extra-ace],
|
||||
+ AS_HELP_STRING([--enable-extra-ace], [enable additional ACE converters. [default=no]]),
|
||||
+ [extraace=$enableval], [extraace=no])
|
||||
+if test "$mdnkit_compat" = "yes"; then
|
||||
+ AC_DEFINE(IDN_EXTRA_ACE, 1, [additional ACE converters compiled in.])
|
||||
+fi
|
||||
+
|
||||
+AC_ARG_WITH([utf8],
|
||||
+ AS_HELP_STRING([--with-utf8=NAME], [codeset name for UTF-8 encoding [UTF-8]]),
|
||||
+ [UTF8_NAME="$withval"], [UTF8_NAME="UTF-8"])
|
||||
+AC_DEFINE_UNQUOTED(IDN_UTF8_ENCODING_NAME, "$UTF8_NAME", [Define your iconv codeset name for utf-8.])
|
||||
+AC_SUBST(UTF8_NAME)
|
||||
+
|
||||
+AC_ARG_ENABLE([liteonly],
|
||||
+ AS_HELP_STRING([--enable-liteonly], [compile and install lite library only [default=no]]),
|
||||
+ [liteonly=$enableval], [liteonly=no])
|
||||
+AM_CONDITIONAL(LITEONLY, [test "$liteonly" = "yes"])
|
||||
+
|
||||
+AC_ARG_ENABLE([runidn],
|
||||
+ AS_HELP_STRING([--enable-runidn], [compile and install runidn [default=no]]),
|
||||
+ [install_runidn=$enableval], [install_runidn=no])
|
||||
+if test "$install_runidn" = "yes"; then
|
||||
+ if test "$liteonly" = "yes"; then
|
||||
+ AC_MSG_ERROR([you can't set --enable-runidn and --enable-liteonly simultaneously])
|
||||
+ fi
|
||||
+fi
|
||||
+AM_CONDITIONAL(RUNIDN, [test "$install_runidn" = "yes"])
|
||||
+
|
||||
+AC_ARG_WITH([iconv-include],
|
||||
+ AS_HELP_STRING([--with-iconv-include=DIR], [iconv include files are in DIR []]),
|
||||
+ [iconv_include="$withval"], [iconv_include="$includedir"])
|
||||
+ICONVINC="-I$iconv_include"
|
||||
+AC_SUBST(ICONVINC)
|
||||
+
|
||||
+AC_ARG_WITH([iconv],
|
||||
+ AS_HELP_STRING([--with-iconv=LIB], [library for iconv []]),
|
||||
+ [iconv="$withval"], [iconv="-lc"])
|
||||
+ICONVLIB=$iconv
|
||||
+AC_SUBST(ICONVLIB)
|
||||
+
|
||||
+AC_ARG_WITH([iconv-sofile],
|
||||
+ AS_HELP_STRING([--with-iconv-sofile=PATH], [shared library file for libiconv]),
|
||||
+ [ICONVSOFILE=$withval], [ICONVSOFILE=guess])
|
||||
+if test "$ICONVSOFILE" = guess; then
|
||||
+ if test "$liteonly" != yes ; then
|
||||
+ if test "$ICONVLIB" = ""; then
|
||||
+ ICONVSOFILE=none
|
||||
+ else
|
||||
+ AC_MSG_CHECKING(pathname of iconv shared library)
|
||||
+ ic_libdir=
|
||||
+ ic_libname=
|
||||
+ case "$host" in
|
||||
+ *-hpux*)
|
||||
+ SO=sl
|
||||
+ ;;
|
||||
+ *)
|
||||
+ SO=so
|
||||
+ ;;
|
||||
+ esac
|
||||
+ for arg in $ICONVLIB; do
|
||||
+ case "$arg" in
|
||||
+ -L*) ic_libdir="$ic_libdir `echo $arg | sed s/-L//`" ;;
|
||||
+ -l*) ic_libname=`echo $arg | sed s/-l//` ;;
|
||||
+ /*.$SO*) ICONVSOFILE=$arg ;;
|
||||
+ esac
|
||||
+ done
|
||||
+ if test "$ICONVSOFILE" = guess; then
|
||||
+ if test "$ic_libname" = ""; then
|
||||
+ AC_MSG_RESULT(unknown)
|
||||
+ AC_MSG_WARN([use --with-iconv-sofile for specifying iconv shared library file])
|
||||
+ ICONVSOFILE=none
|
||||
+ else
|
||||
+ if test "$ic_libdir" = ""; then
|
||||
+ # Standard (and semi-standard) library directories
|
||||
+ ic_libdir="/lib /usr/lib /usr/local/lib"
|
||||
+ fi
|
||||
+ for dir in $ic_libdir; do
|
||||
+ ICONVSOFILE=`ls -r $dir/lib$ic_libname.$SO* 2>/dev/null | head -1`
|
||||
+ if test "$ICONVSOFILE" != ""; then
|
||||
+ break
|
||||
+ fi
|
||||
+ done
|
||||
+ if test "$ICONVSOFILE" != ""; then
|
||||
+ AC_MSG_RESULT($ICONVSOFILE)
|
||||
+ else
|
||||
+ AC_MSG_RESULT(unknown)
|
||||
+ AC_MSG_WARN([use --with-iconv-sofile for specifying iconv shared library file])
|
||||
+ ICONVSOFILE=none
|
||||
+ fi
|
||||
+ fi
|
||||
+ fi
|
||||
+ fi
|
||||
+ fi
|
||||
+fi
|
||||
+AC_SUBST(ICONVSOFILE)
|
||||
+
|
||||
+dnl Figure out preload stuff.
|
||||
+PRELOAD_VAR="LD_PRELOAD"
|
||||
+PRELOAD_SEP=":"
|
||||
+PRELOAD_LAST=""
|
||||
+case "$host" in
|
||||
+*-solaris*)
|
||||
+ PRELOAD_SEP=" "
|
||||
+ ;;
|
||||
+*-linux*)
|
||||
+ PRELOAD_SEP=" "
|
||||
+ ;;
|
||||
+*-osf*)
|
||||
+ PRELOAD_VAR="_RLD_LIST"
|
||||
+ PRELOAD_LAST=":DEFAULT"
|
||||
+ ;;
|
||||
+*-netbsd*)
|
||||
+ if test -x /usr/bin/file -a -x /usr/bin/grep ; then
|
||||
+ case "`/usr/bin/file /usr/bin/grep`" in
|
||||
+ *ELF*)
|
||||
+ PRELOAD_SEP=" "
|
||||
+ ;;
|
||||
+ esac
|
||||
+ fi
|
||||
+ ;;
|
||||
+esac
|
||||
+
|
||||
+AC_SUBST(PRELOAD_VAR)
|
||||
+AC_SUBST(PRELOAD_SEP)
|
||||
+AC_SUBST(PRELOAD_LAST)
|
||||
+
|
||||
+dnl Checks for standard tools.
|
||||
+AC_PROG_CC
|
||||
+AC_PROG_CPP
|
||||
+AC_PROG_CXX
|
||||
+AC_PROG_LN_S
|
||||
+AC_PROG_MAKE_SET
|
||||
+AC_PROG_INSTALL
|
||||
+AM_PROG_LIBTOOL
|
||||
+
|
||||
+AC_PATH_PROGS(PERL, perl, perl)
|
||||
+
|
||||
+dnl Checks for header files.
|
||||
+AC_CHECK_HEADERS(pwd.h langinfo.h locale.h netdb.h stddef.h stdlib.h string.h sys/socket.h unistd.h)
|
||||
+if test "$install_runidn" = "yes"; then
|
||||
+ AC_CHECK_HEADERS(dlfcn.h)
|
||||
+fi
|
||||
+
|
||||
+saved_CPPFLAGS=$CPPFLAGS
|
||||
+CPPFLAGS="$CPPFLAGS $ICONVINC"
|
||||
+if test "$liteonly" != "yes"; then
|
||||
+ AC_CHECK_HEADERS(iconv.h)
|
||||
+fi
|
||||
+CPPFLAGS=$saved_CPPFLAGS
|
||||
+
|
||||
+dnl Checks for data types.
|
||||
+AC_C_CONST
|
||||
+AC_TYPE_SIZE_T
|
||||
+AC_HEADER_TIME
|
||||
+AC_TYPE_UID_T
|
||||
+AC_CHECK_TYPES([ptrdiff_t])
|
||||
+
|
||||
+dnl for dnsproxy.
|
||||
+AC_CHECK_TYPE(BOOL, int)
|
||||
+
|
||||
+dnl Checks for libraries.
|
||||
+if test "$install_runidn" = yes ; then
|
||||
+ AC_CHECK_LIB(socket, socket)
|
||||
+ AC_CHECK_LIB(nsl, inet_addr)
|
||||
+ AC_CHECK_LIB(dl, dlopen, [
|
||||
+ LIBS="-ldl $LIBS"
|
||||
+ LIBDL="-ldl"
|
||||
+ AC_DEFINE(HAVE_LIBDL, 1, [Define if you have the dl library (-ldl).])
|
||||
+ AC_SUBST(LIBDL)
|
||||
+ ])
|
||||
+fi
|
||||
+
|
||||
+dnl Checks for library functions.
|
||||
+AC_FUNC_MALLOC
|
||||
+AC_FUNC_MEMCMP
|
||||
+AC_FUNC_REALLOC
|
||||
+AC_FUNC_SELECT_ARGTYPES
|
||||
+AC_FUNC_VPRINTF
|
||||
+AC_CHECK_FUNCS(vsnprintf setvbuf setlocale nl_langinfo memmove bcopy setenv unsetenv inet_ntoa socket gethostname isascii memset putenv select sethostname strchr strerror strpbrk strrchr strtoul)
|
||||
+if test "$install_runidn" = yes ; then
|
||||
+ AC_CHECK_FUNCS(gethostbyname gethostbyname2 gethostbyaddr)
|
||||
+ AC_CHECK_FUNCS(gethostbyname_r gethostbyname2_r gethostbyaddr_r, find_gethost_r=yes)
|
||||
+ AC_CHECK_FUNCS(getipnodebyname getipnodebyaddr freehostent)
|
||||
+ AC_CHECK_FUNCS(getaddrinfo freeaddrinfo getnameinfo)
|
||||
+ AC_CHECK_FUNCS(dlopen dlsym)
|
||||
+fi
|
||||
+
|
||||
+if test "$install_runidn" = yes ; then
|
||||
+dnl Checks the flavor of gethostbyaddr* functions.
|
||||
+ AC_CACHE_CHECK(flavor of gethostbyaddr, ac_cv_flavor_gethostbyaddr,
|
||||
+ [ac_cv_flavor_gethostbyaddr=unknown
|
||||
+ AC_TRY_RUN(
|
||||
+ [
|
||||
+ #include <stddef.h>
|
||||
+ #include <sys/types.h>
|
||||
+ #include <sys/socket.h>
|
||||
+ #include <netdb.h>
|
||||
+ struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ int main() {
|
||||
+ (void)gethostbyaddr(NULL, 0, 0);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ ], ac_cv_flavor_gethostbyaddr=glibc2_2,,
|
||||
+ ac_cv_flavor_gethostbyaddr=unknown)
|
||||
+ AC_TRY_RUN(
|
||||
+ [
|
||||
+ #include <stddef.h>
|
||||
+ #include <sys/types.h>
|
||||
+ #include <sys/socket.h>
|
||||
+ #include <netdb.h>
|
||||
+ struct hostent *gethostbyaddr(const char *addr, size_t len, int type) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ int main() {
|
||||
+ (void)gethostbyaddr(NULL, 0, 0);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ ], ac_cv_flavor_gethostbyaddr=glibc,,
|
||||
+ ac_cv_flavor_gethostbyaddr=unknown)
|
||||
+ AC_TRY_RUN(
|
||||
+ [
|
||||
+ #include <stddef.h>
|
||||
+ #include <sys/types.h>
|
||||
+ #include <sys/socket.h>
|
||||
+ #include <netdb.h>
|
||||
+ struct hostent *gethostbyaddr(const char *addr, int len, int type) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ int main() {
|
||||
+ (void)gethostbyaddr(NULL, 0, 0);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ ], ac_cv_flavor_gethostbyaddr=traditional,,
|
||||
+ ac_cv_flavor_gethostbyaddr=unknown)
|
||||
+ if test "$ac_cv_func_gethostbyaddr" = no ; then
|
||||
+ ac_cv_flavor_gethostbyaddr=none
|
||||
+ fi])
|
||||
+
|
||||
+ case "$ac_cv_flavor_gethostbyaddr" in
|
||||
+ glibc2_2)
|
||||
+ ac_cv_type_ghba_addr_t='const void *'
|
||||
+ ac_cv_type_ghba_addrlen_t='socklen_t'
|
||||
+ ;;
|
||||
+ glibc)
|
||||
+ ac_cv_type_ghba_addr_t='const char *'
|
||||
+ ac_cv_type_ghba_addrlen_t='size_t'
|
||||
+ ;;
|
||||
+ traditional | none)
|
||||
+ ac_cv_type_ghba_addr_t='const char *'
|
||||
+ ac_cv_type_ghba_addrlen_t='int'
|
||||
+ ;;
|
||||
+ *)
|
||||
+ AC_MSG_ERROR([can't build runidn, since parameter type list of gethostbyaddr() is unknown to configure.])
|
||||
+ ;;
|
||||
+ esac
|
||||
+ AC_DEFINE_UNQUOTED(GHBA_ADDR_T, $ac_cv_type_ghba_addr_t,
|
||||
+ [Define as the type of the 1st argument of gethostbyaddr.])
|
||||
+ AC_DEFINE_UNQUOTED(GHBA_ADDRLEN_T, $ac_cv_type_ghba_addrlen_t,
|
||||
+ [Define as the type of the 2nd argument of gethostbyaddr.])
|
||||
+
|
||||
+dnl Checks the flavor of getnameinfo functions.
|
||||
+ AC_CACHE_CHECK(flavor of getnameinfo, ac_cv_flavor_getnameinfo,
|
||||
+ [ac_cv_flavor_getnameinfo=unknown
|
||||
+ AC_TRY_RUN(
|
||||
+ [
|
||||
+ #include <stddef.h>
|
||||
+ #include <sys/types.h>
|
||||
+ #include <sys/socket.h>
|
||||
+ #include <netdb.h>
|
||||
+ int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
|
||||
+ socklen_t hostlen, char *serv, socklen_t servlen,
|
||||
+ unsigned int flags) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ int main() {
|
||||
+ (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ ], ac_cv_flavor_getnameinfo=glibc2_2_2,,
|
||||
+ ac_cv_flavor_getnameinfo=unknown)
|
||||
+ AC_TRY_RUN(
|
||||
+ [
|
||||
+ #include <stddef.h>
|
||||
+ #include <sys/types.h>
|
||||
+ #include <sys/socket.h>
|
||||
+ #include <netdb.h>
|
||||
+ int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
|
||||
+ socklen_t hostlen, char *serv, socklen_t servlen,
|
||||
+ int flags) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ int main() {
|
||||
+ (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ ], ac_cv_flavor_getnameinfo=rfc2553bis_03,,
|
||||
+ ac_cv_flavor_getnameinfo=unknown)
|
||||
+ AC_TRY_RUN(
|
||||
+ [
|
||||
+ #include <stddef.h>
|
||||
+ #include <sys/types.h>
|
||||
+ #include <sys/socket.h>
|
||||
+ #include <netdb.h>
|
||||
+ int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
|
||||
+ size_t hostlen, char *serv, size_t servlen, int flags) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ int main() {
|
||||
+ (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ ], ac_cv_flavor_getnameinfo=rfc2553,,
|
||||
+ ac_cv_flavor_getnameinfo=unknown)
|
||||
+ AC_TRY_RUN(
|
||||
+ [
|
||||
+ #include <stddef.h>
|
||||
+ #include <sys/types.h>
|
||||
+ #include <sys/socket.h>
|
||||
+ #include <netdb.h>
|
||||
+ int getnameinfo(const struct sockaddr *sa, size_t salen, char *host,
|
||||
+ size_t hostlen, char *serv, size_t servlen, int flags) {
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ int main() {
|
||||
+ (void)getnameinfo(NULL, 0, NULL, 0, NULL, 0, 0);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ ], ac_cv_flavor_getnameinfo=rfc2133,,
|
||||
+ ac_cv_flavor_getnameinfo=unknown)
|
||||
+ if test "$ac_cv_func_getnameinfo" = no ; then
|
||||
+ ac_cv_flavor_getnameinfo=none
|
||||
+ fi])
|
||||
+
|
||||
+ case "$ac_cv_flavor_getnameinfo" in
|
||||
+ glibc2_2_2)
|
||||
+ ac_cv_type_gni_salen_t='socklen_t'
|
||||
+ ac_cv_type_gni_hostlen_t='socklen_t'
|
||||
+ ac_cv_type_gni_servlen_t='socklen_t'
|
||||
+ ac_cv_type_gni_flags_t='unsigned int'
|
||||
+ ;;
|
||||
+ rfc2553bis_03)
|
||||
+ ac_cv_type_gni_salen_t='socklen_t'
|
||||
+ ac_cv_type_gni_hostlen_t='socklen_t'
|
||||
+ ac_cv_type_gni_servlen_t='socklen_t'
|
||||
+ ac_cv_type_gni_flags_t='int'
|
||||
+ ;;
|
||||
+ rfc2553)
|
||||
+ ac_cv_type_gni_salen_t='socklen_t'
|
||||
+ ac_cv_type_gni_hostlen_t='size_t'
|
||||
+ ac_cv_type_gni_servlen_t='size_t'
|
||||
+ ac_cv_type_gni_flags_t='int'
|
||||
+ ;;
|
||||
+ rfc2133 | none)
|
||||
+ ac_cv_type_gni_salen_t='size_t'
|
||||
+ ac_cv_type_gni_hostlen_t='size_t'
|
||||
+ ac_cv_type_gni_servlen_t='size_t'
|
||||
+ ac_cv_type_gni_flags_t='int'
|
||||
+ ;;
|
||||
+ *)
|
||||
+ AC_MSG_ERROR([can't build runidn, since parameter type list of getnameinfo() is unknown to configure.])
|
||||
+ esac
|
||||
+ AC_DEFINE_UNQUOTED(GNI_SALEN_T, $ac_cv_type_gni_salen_t,
|
||||
+ [Define as the type of the 2nd argument of getnameinfo.])
|
||||
+ AC_DEFINE_UNQUOTED(GNI_HOSTLEN_T, $ac_cv_type_gni_hostlen_t,
|
||||
+ [Define as the type of the 4th argument of getnameinfo.])
|
||||
+ AC_DEFINE_UNQUOTED(GNI_SERVLEN_T, $ac_cv_type_gni_servlen_t,
|
||||
+ [Define as the type of the 6th argument of getnameinfo.])
|
||||
+ AC_DEFINE_UNQUOTED(GNI_FLAGS_T, $ac_cv_type_gni_flags_t,
|
||||
+ [Define as the type of the 7th argument of getnameinfo.])
|
||||
+fi
|
||||
+
|
||||
+dnl resume here.
|
||||
+dnl Checks the flavor of gethost*_r functions.
|
||||
+if test "$find_gethost_r" = yes; then
|
||||
+ AC_CACHE_CHECK(flavor of gethostbyname_r, ac_cv_flavor_gethost_r,
|
||||
+ [AC_TRY_RUN(
|
||||
+changequote(<<, >>)dnl
|
||||
+<<
|
||||
+#include <stddef.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/socket.h>
|
||||
+#include <netdb.h>
|
||||
+#include <stdio.h>
|
||||
+int main()
|
||||
+{
|
||||
+ int err = 0;
|
||||
+ struct hostent hebuf, *hp;
|
||||
+ char buf[10];
|
||||
+ /* Try resolving a invalid name using glibc flavor. */
|
||||
+ (void)gethostbyname_r("@#!", &hebuf, buf, sizeof(buf), &hp, &err);
|
||||
+ if (err != 0)
|
||||
+ return 0; /* glibc flavor */
|
||||
+ else
|
||||
+ return 1; /* Sun flavor */
|
||||
+}
|
||||
+>>,
|
||||
+changequote([, ])dnl
|
||||
+ ac_cv_flavor_gethost_r=glibc,
|
||||
+ ac_cv_flavor_gethost_r=sun,
|
||||
+ ac_cv_flavor_gethost_r=sun)])
|
||||
+ if test "$ac_cv_flavor_gethost_r" = "glibc"; then
|
||||
+ AC_DEFINE(GETHOST_R_GLIBC_FLAVOR, 1,
|
||||
+ [Define if the prototype of gethost*_r is glibc flavor.])
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
+dnl Checks for iconv library.
|
||||
+if test "$liteonly" != yes ; then
|
||||
+ AC_MSG_CHECKING(for iconv)
|
||||
+ saved_CPPFLAGS=$CPPFLAGS
|
||||
+ saved_LIBS=$LIBS
|
||||
+ CPPFLAGS="$CPPFLAGS $ICONVINC"
|
||||
+ LIBS="$LIBS $ICONVLIB"
|
||||
+ AC_TRY_LINK([
|
||||
+ #include <iconv.h>
|
||||
+ ], [
|
||||
+ iconv_t i;
|
||||
+ i = iconv_open("ISO-8859-1", "UTF-8");
|
||||
+ ], [iconv_try_link=yes], [iconv_try_link=no])
|
||||
+ LIBS=$saved_LIBS
|
||||
+ CPPFLAGS=$saved_CPPFLAGS
|
||||
+ AC_MSG_RESULT($iconv_try_link)
|
||||
+ if test "$iconv_try_link" = no ; then
|
||||
+ AC_MSG_ERROR(iconv function not available)
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
+dnl Check for codeset name for UTF-8.
|
||||
+if test "$liteonly" != yes ; then
|
||||
+ AC_MSG_CHECKING([for codeset name $UTF8_NAME])
|
||||
+ saved_CPPFLAGS=$CPPFLAGS
|
||||
+ saved_LIBS=$LIBS
|
||||
+ CPPFLAGS="$CPPFLAGS $ICONVINC"
|
||||
+ LIBS="$LIBS $ICONVLIB"
|
||||
+ AC_TRY_RUN([
|
||||
+ #include <stddef.h>
|
||||
+ #include <stdlib.h>
|
||||
+ #include <iconv.h>
|
||||
+ #define UTF8_NAME "$UTF8_NAME"
|
||||
+ #define ICONV_FAIL ((iconv_t)(-1))
|
||||
+ /* Check if the codeset name UTF8_NAME is valid by performing iconv_open(). */
|
||||
+ int main() {
|
||||
+ int i;
|
||||
+ /* list of codeset names likely to exist */
|
||||
+ static char *codeset[] = {
|
||||
+ "ASCII", "ISO-8859-1", "ISO8859-1", "iso8859_1", "8859-1",
|
||||
+ "Shift_JIS", "SJIS", "sjis", NULL,
|
||||
+ };
|
||||
+
|
||||
+ /* First try null conversion. */
|
||||
+ if (iconv_open(UTF8_NAME, UTF8_NAME) != ICONV_FAIL) return 0;
|
||||
+
|
||||
+ /* Unfortunately, above check fails on certain systems, such as Solaris. */
|
||||
+ for (i = 0; codeset[i] != NULL; i++) {
|
||||
+ if (iconv_open(UTF8_NAME, codeset[i]) != ICONV_FAIL) return 0;
|
||||
+ }
|
||||
+ return 1;
|
||||
+ }
|
||||
+ ], utf8_name_valid=yes, utf8_name_valid=no, utf8_name_valid=unknown)
|
||||
+ LIBS=$saved_LIBS
|
||||
+ CPPFLAGS=$saved_CPPFLAGS
|
||||
+ AC_MSG_RESULT($utf8_name_valid)
|
||||
+fi
|
||||
+
|
||||
+dnl Output.
|
||||
+AC_CONFIG_HEADER(include/config.h)
|
||||
+AC_OUTPUT(
|
||||
+ Makefile
|
||||
+ include/Makefile
|
||||
+ include/idn/Makefile
|
||||
+ include/mdn/Makefile
|
||||
+ lib/Makefile
|
||||
+ man/Makefile
|
||||
+ tools/Makefile
|
||||
+ tools/idnconv/Makefile
|
||||
+ tools/runidn/Makefile
|
||||
+ tools/runidn/runidn
|
||||
+ map/Makefile
|
||||
+ lib/tests/Makefile
|
||||
+)
|
||||
--- idnkit-1.0-src/man/Makefile.am.autotools 2007-04-16 13:39:57.000000000 +0200
|
||||
+++ idnkit-1.0-src/man/Makefile.am 2007-04-16 14:02:24.000000000 +0200
|
||||
@@ -0,0 +1,43 @@
|
||||
+man3_MANS =
|
||||
+man5_MANS = idnrc.5 idnalias.conf.5
|
||||
+if LITEONLY
|
||||
+if COMPAT
|
||||
+man3_MANS += libmdnlite.3
|
||||
+man5_MANS += mdn.conf.5
|
||||
+else
|
||||
+man3_MANS += libidnkitlite.3
|
||||
+man5_MANS += idn.conf.5
|
||||
+endif
|
||||
+else
|
||||
+if COMPAT
|
||||
+man3_MANS += libmdn.3 libmdnlite.3
|
||||
+man5_MANS += mdn.conf.5
|
||||
+else
|
||||
+man3_MANS += libidnkit.3 libidnkitlite.3
|
||||
+man5_MANS += idn.conf.5
|
||||
+endif
|
||||
+endif
|
||||
+
|
||||
+idnrc.5: idn.conf.5.in
|
||||
+ cp -f idn.conf.5.in idnrc.5
|
||||
+
|
||||
+idnalias.conf.5: idn.conf.5.in
|
||||
+ cp -f idn.conf.5.in idnalias.conf.5
|
||||
+
|
||||
+libidnkit.3: libidnkit.3.in
|
||||
+ cp -f libidnkit.3.in libidnkit.3
|
||||
+
|
||||
+libidnkitlite.3: libidnkit.3
|
||||
+ cp -f libidnkit.3 libidnkitlite.3
|
||||
+
|
||||
+libmdnlite.3: libidnkit.3
|
||||
+ cp -f libidnkit.3 libmdnlite.3
|
||||
+
|
||||
+libmdn.3: libidnkit.3
|
||||
+ cp -f libidnkit.3 libmdn.3
|
||||
+
|
||||
+idn.conf.5: idn.conf.5.in
|
||||
+ sed 's%[@]sysconfdir[@]%$(sysdir)%' < idn.conf.5.in > $@
|
||||
+
|
||||
+mdn.conf.5: idn.conf.5
|
||||
+ cp -f idn.conf.5 mdn.conf.5
|
267
bind-9.5-libidn.patch
Normal file
267
bind-9.5-libidn.patch
Normal file
@ -0,0 +1,267 @@
|
||||
diff -up bind-9.5.0a6/bin/dig/Makefile.in.libidn bind-9.5.0a6/bin/dig/Makefile.in
|
||||
--- bind-9.5.0a6/bin/dig/Makefile.in.libidn 2007-07-29 13:17:00.000000000 +0200
|
||||
+++ bind-9.5.0a6/bin/dig/Makefile.in 2007-07-29 13:17:01.000000000 +0200
|
||||
@@ -45,7 +45,7 @@ DEPLIBS = ${DNSDEPLIBS} ${BIND9DEPLIBS}
|
||||
${LWRESDEPLIBS}
|
||||
|
||||
LIBS = ${LWRESLIBS} ${DNSLIBS} ${BIND9LIBS} ${ISCLIBS} \
|
||||
- ${ISCCFGLIBS} @IDNLIBS@ @LIBS@
|
||||
+ ${ISCCFGLIBS} @IDNLIBS@ @LIBS@ -lidn
|
||||
|
||||
SUBDIRS =
|
||||
|
||||
@@ -63,7 +63,7 @@ HTMLPAGES = dig.html host.html nslookup.
|
||||
|
||||
MANOBJS = ${MANPAGES} ${HTMLPAGES}
|
||||
|
||||
-EXT_CFLAGS = -fPIE
|
||||
+EXT_CFLAGS = -fPIE -DWITH_LIBIDN
|
||||
|
||||
@BIND9_MAKE_RULES@
|
||||
|
||||
diff -up bind-9.5.0a6/bin/dig/dighost.c.libidn bind-9.5.0a6/bin/dig/dighost.c
|
||||
--- bind-9.5.0a6/bin/dig/dighost.c.libidn 2007-06-19 01:47:17.000000000 +0200
|
||||
+++ bind-9.5.0a6/bin/dig/dighost.c 2007-07-30 14:58:19.000000000 +0200
|
||||
@@ -44,6 +44,11 @@
|
||||
#include <idn/api.h>
|
||||
#endif
|
||||
|
||||
+#ifdef WITH_LIBIDN
|
||||
+#include <stringprep.h>
|
||||
+#include <idna.h>
|
||||
+#endif
|
||||
+
|
||||
#include <dns/byaddr.h>
|
||||
#ifdef DIG_SIGCHASE
|
||||
#include <dns/dnssec.h>
|
||||
@@ -147,6 +152,14 @@ static void idn_check_result(idn_result
|
||||
int idnoptions = 0;
|
||||
#endif
|
||||
|
||||
+#ifdef WITH_LIBIDN
|
||||
+static isc_result_t libidn_locale_to_utf8 (const char* from, char **to);
|
||||
+static isc_result_t libidn_utf8_to_ascii (const char* from, char *to);
|
||||
+static isc_result_t output_filter (isc_buffer_t *buffer,
|
||||
+ unsigned int used_org,
|
||||
+ isc_boolean_t absolute);
|
||||
+#endif
|
||||
+
|
||||
/*%
|
||||
* Exit Codes:
|
||||
*
|
||||
@@ -1002,6 +1015,9 @@ void
|
||||
setup_system(void) {
|
||||
dig_searchlist_t *domain = NULL;
|
||||
lwres_result_t lwresult;
|
||||
+#ifdef WITH_LIBIDN
|
||||
+ isc_result_t result;
|
||||
+#endif
|
||||
|
||||
debug("setup_system()");
|
||||
|
||||
@@ -1050,8 +1066,15 @@ setup_system(void) {
|
||||
|
||||
#ifdef WITH_IDN
|
||||
initialize_idn();
|
||||
+
|
||||
+#endif
|
||||
+#ifdef WITH_LIBIDN
|
||||
+ result = dns_name_settotextfilter(output_filter);
|
||||
+ check_result(result, "dns_name_settotextfilter");
|
||||
+#ifdef HAVE_SETLOCALE
|
||||
+ setlocale (LC_ALL, "");
|
||||
+#endif
|
||||
#endif
|
||||
-
|
||||
if (keyfile[0] != 0)
|
||||
setup_file_key();
|
||||
else if (keysecret[0] != 0)
|
||||
@@ -1740,12 +1763,18 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
idn_result_t mr;
|
||||
char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
|
||||
#endif
|
||||
+#ifdef WITH_LIBIDN
|
||||
+ char *utf8_str = NULL, utf8_name[MXNAME], ascii_name[MXNAME];
|
||||
+#endif
|
||||
|
||||
#ifdef WITH_IDN
|
||||
result = dns_name_settotextfilter(output_filter);
|
||||
check_result(result, "dns_name_settotextfilter");
|
||||
#endif
|
||||
-
|
||||
+#ifdef WITH_LIBIDN
|
||||
+ result = dns_name_settotextfilter (output_filter);
|
||||
+ check_result(result, "dns_name_settotextfilter");
|
||||
+#endif
|
||||
REQUIRE(lookup != NULL);
|
||||
INSIST(!free_now);
|
||||
|
||||
@@ -1782,6 +1811,16 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
|
||||
utf8_textname, sizeof(utf8_textname));
|
||||
idn_check_result(mr, "convert textname to UTF-8");
|
||||
+#elif defined (WITH_LIBIDN)
|
||||
+ result = libidn_locale_to_utf8 (lookup->textname, &utf8_str);
|
||||
+ check_result (result, "converting textname to UTF-8");
|
||||
+ len = strlen (utf8_str);
|
||||
+ if (len < MXNAME) {
|
||||
+ (void) strcpy (utf8_name, utf8_str);
|
||||
+ } else {
|
||||
+ fatal ("Too long name");
|
||||
+ }
|
||||
+ isc_mem_free (mctx, utf8_str);
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -1801,6 +1840,15 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
lookup->origin = ISC_LIST_HEAD(search_list);
|
||||
lookup->need_search = ISC_FALSE;
|
||||
}
|
||||
+#elif defined (WITH_LIBIDN)
|
||||
+ if ((count_dots(utf8_name) >= ndots) || !usesearch) {
|
||||
+ lookup->origin = NULL; /* Force abs lookup */
|
||||
+ lookup->done_as_is = ISC_TRUE;
|
||||
+ lookup->need_search = usesearch;
|
||||
+ } else if (lookup->origin == NULL && usesearch) {
|
||||
+ lookup->origin = ISC_LIST_HEAD(search_list);
|
||||
+ lookup->need_search = ISC_FALSE;
|
||||
+ }
|
||||
#else
|
||||
if ((count_dots(lookup->textname) >= ndots) || !usesearch) {
|
||||
lookup->origin = NULL; /* Force abs lookup */
|
||||
@@ -1827,6 +1875,20 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
|
||||
idn_textname, sizeof(idn_textname));
|
||||
idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
|
||||
+#elif defined (WITH_LIBIDN)
|
||||
+ if (lookup->origin != NULL) {
|
||||
+ result = libidn_locale_to_utf8 (lookup->origin->origin, &utf8_str);
|
||||
+ check_result (result, "convert origin to UTF-8");
|
||||
+ if (len + strlen (utf8_str) + 1 < MXNAME) {
|
||||
+ utf8_name[len++] = '.';
|
||||
+ (void) strcpy (utf8_name + len, utf8_str);
|
||||
+ } else {
|
||||
+ fatal ("Too long name + origin");
|
||||
+ }
|
||||
+ isc_mem_free (mctx, utf8_str);
|
||||
+ }
|
||||
+
|
||||
+ result = libidn_utf8_to_ascii (utf8_name, ascii_name);
|
||||
#else
|
||||
if (lookup->origin != NULL) {
|
||||
debug("trying origin %s", lookup->origin->origin);
|
||||
@@ -1883,6 +1945,14 @@ setup_lookup(dig_lookup_t *lookup) {
|
||||
dns_rootname,
|
||||
ISC_FALSE,
|
||||
&lookup->namebuf);
|
||||
+#elif defined (WITH_LIBIDN)
|
||||
+ len = strlen (ascii_name);
|
||||
+ isc_buffer_init(&b, ascii_name, len);
|
||||
+ isc_buffer_add(&b, len);
|
||||
+ result = dns_name_fromtext(lookup->name, &b,
|
||||
+ dns_rootname,
|
||||
+ ISC_FALSE,
|
||||
+ &lookup->namebuf);
|
||||
#else
|
||||
len = strlen(lookup->textname);
|
||||
isc_buffer_init(&b, lookup->textname, len);
|
||||
@@ -3310,7 +3380,7 @@ destroy_libs(void) {
|
||||
void * ptr;
|
||||
dig_message_t *chase_msg;
|
||||
#endif
|
||||
-#ifdef WITH_IDN
|
||||
+#if defined (WITH_IDN) || defined (WITH_LIBIDN)
|
||||
isc_result_t result;
|
||||
#endif
|
||||
|
||||
@@ -3349,6 +3419,10 @@ destroy_libs(void) {
|
||||
result = dns_name_settotextfilter(NULL);
|
||||
check_result(result, "dns_name_settotextfilter");
|
||||
#endif
|
||||
+#ifdef WITH_LIBIDN
|
||||
+ result = dns_name_settotextfilter (NULL);
|
||||
+ check_result(result, "clearing dns_name_settotextfilter");
|
||||
+#endif
|
||||
dns_name_destroy();
|
||||
|
||||
if (commctx != NULL) {
|
||||
@@ -3525,6 +3599,79 @@ idn_check_result(idn_result_t r, const c
|
||||
}
|
||||
}
|
||||
#endif /* WITH_IDN */
|
||||
+#ifdef WITH_LIBIDN
|
||||
+/* If stringprep_locale_to_utf8 fails simple copy string */
|
||||
+static isc_result_t
|
||||
+libidn_locale_to_utf8 (const char *from, char **to) {
|
||||
+ char *utf8_str;
|
||||
+
|
||||
+ utf8_str = stringprep_locale_to_utf8 (from);
|
||||
+ if (utf8_str == NULL) {
|
||||
+ *to = isc_mem_allocate (mctx, strlen (from) + 1);
|
||||
+ if (*to == NULL)
|
||||
+ return (ISC_R_NOMEMORY);
|
||||
+ (void) strcpy (*to, from);
|
||||
+ } else {
|
||||
+ *to = isc_mem_allocate (mctx, strlen (utf8_str) + 1);
|
||||
+ if (*to == NULL)
|
||||
+ return (ISC_R_NOMEMORY);
|
||||
+ (void) strcpy (*to, utf8_str);
|
||||
+ free (utf8_str);
|
||||
+ }
|
||||
+ return (ISC_R_SUCCESS);
|
||||
+}
|
||||
+static isc_result_t
|
||||
+libidn_utf8_to_ascii (const char *from, char *to) {
|
||||
+ char *ascii;
|
||||
+
|
||||
+ if (idna_to_ascii_8z (from, &ascii, 0) != IDNA_SUCCESS)
|
||||
+ return (ISC_R_FAILURE);
|
||||
+
|
||||
+ (void) strcpy (to, ascii);
|
||||
+ free (ascii);
|
||||
+ return (ISC_R_SUCCESS);
|
||||
+}
|
||||
+/* based on idnkit's code*/
|
||||
+static isc_result_t
|
||||
+output_filter (isc_buffer_t *buffer, unsigned int used_org,
|
||||
+ isc_boolean_t absolute) {
|
||||
+ char tmp1[MXNAME], *tmp2;
|
||||
+ size_t fromlen, tolen;
|
||||
+ isc_boolean_t end_with_dot;
|
||||
+
|
||||
+ fromlen = isc_buffer_usedlength(buffer) - used_org;
|
||||
+ if (fromlen >= MXNAME)
|
||||
+ 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 >= MXNAME)
|
||||
+ return (ISC_R_SUCCESS);
|
||||
+ tmp1[fromlen - 1] = '.';
|
||||
+ }
|
||||
+ tmp1[fromlen] = '\0';
|
||||
+
|
||||
+ if (idna_to_unicode_lzlz (tmp1, &tmp2, 0) != IDNA_SUCCESS)
|
||||
+ return (ISC_R_SUCCESS);
|
||||
+
|
||||
+ (void) strcpy (tmp1, tmp2);
|
||||
+ free (tmp2);
|
||||
+
|
||||
+ 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);
|
||||
+}
|
||||
+#endif /* WITH_LIBIDN*/
|
||||
|
||||
#ifdef DIG_SIGCHASE
|
||||
void
|
35
bind.spec
35
bind.spec
@ -27,7 +27,7 @@ Summary: The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) serv
|
||||
Name: bind
|
||||
License: BSD-like
|
||||
Version: %{BIND_MAJORVER}.%{BIND_MINORVER}.%{BIND_PATCHVER}
|
||||
Release: 7.%{BIND_RELEASETYPE}%{BIND_RELEASEVER}%{?dist}
|
||||
Release: 8.%{BIND_RELEASETYPE}%{BIND_RELEASEVER}%{?dist}
|
||||
Epoch: 32
|
||||
Url: http://www.isc.org/products/BIND/
|
||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
@ -85,8 +85,7 @@ Patch15: bind-9.5.0-dbus.patch
|
||||
Patch23: bind-9.5-dbus_archdep_libdir.patch
|
||||
|
||||
# IDN paches
|
||||
Patch64: bind-9.4.0-idnkit-autotools.patch
|
||||
Patch65: bind-9.4.0-dig-idn.patch
|
||||
Patch73: bind-9.5-libidn.patch
|
||||
|
||||
#
|
||||
Requires: bind-libs = %{epoch}:%{version}-%{release}, glibc >= 2.2, mktemp
|
||||
@ -117,6 +116,8 @@ BuildRequires: net-tools, perl
|
||||
BuildRequires: krb5-devel
|
||||
Requires: krb5-libs
|
||||
%endif
|
||||
BuildRequires: libidn-devel
|
||||
Requires: libidn
|
||||
|
||||
%description
|
||||
BIND (Berkeley Internet Name Domain) is an implementation of the DNS
|
||||
@ -124,14 +125,11 @@ BIND (Berkeley Internet Name Domain) is an implementation of the DNS
|
||||
which resolves host names to IP addresses; a resolver library
|
||||
(routines for applications to use when interfacing with DNS); and
|
||||
tools for verifying that the DNS server is operating properly.
|
||||
|
||||
%if %{SDB}
|
||||
It also include SDB (Simplified Database Backend) which includes support for
|
||||
It also includes SDB (Simplified Database Backend) which includes support for
|
||||
using alternative Zone Databases stored in an LDAP server (ldapdb),
|
||||
a postgreSQL database (pgsqldb), an sqlite database (sqlitedb),
|
||||
or in the filesystem (dirdb), in addition to the standard in-memory RBT
|
||||
(Red Black Tree) zone database.
|
||||
%endif
|
||||
|
||||
%package libs
|
||||
Summary: Libraries used by the BIND DNS packages
|
||||
@ -248,26 +246,15 @@ cp -fp contrib/dbus/{dbus_mgr.h,dbus_service.h} bin/named/include/named
|
||||
%patch62 -p1 -b .sdb-sqlite-bld
|
||||
%endif
|
||||
%patch63 -p1 -b .directory
|
||||
pushd contrib/idn
|
||||
%patch64 -p0 -b .autotools
|
||||
popd
|
||||
%patch65 -p1 -b .idn
|
||||
%patch71 -p1 -b .overflow
|
||||
%patch72 -p1 -b .64bit
|
||||
%patch73 -p1 -b .libidn
|
||||
:;
|
||||
|
||||
|
||||
%build
|
||||
export CFLAGS="$CFLAGS $RPM_OPT_FLAGS -O0"
|
||||
|
||||
pushd contrib/idn/idnkit-1.0-src
|
||||
libtoolize --copy --force; aclocal; automake -a; autoconf
|
||||
%configure \
|
||||
--with-iconv-include=/usr/include/ \
|
||||
--with-iconv=-lc
|
||||
make %{?_smp_mflags}
|
||||
popd
|
||||
|
||||
libtoolize --copy --force; aclocal; autoconf
|
||||
cp -f /usr/share/libtool/config.{guess,sub} .
|
||||
%if %{WITH_DBUS}
|
||||
@ -291,14 +278,11 @@ export LDFLAGS=-lefence
|
||||
--enable-threads \
|
||||
--enable-ipv6 \
|
||||
--with-pic \
|
||||
--with-openssl=/usr \
|
||||
%if %{LIBBIND}
|
||||
--enable-libbind \
|
||||
%endif
|
||||
--with-idn \
|
||||
--disable-openssl-version-check \
|
||||
CFLAGS="$CFLAGS" \
|
||||
%if %{DLZ}
|
||||
--disable-openssl-version-check \
|
||||
--with-dlz-ldap=yes \
|
||||
--with-dlz-postgres=yes \
|
||||
--with-dlz-mysql=yes \
|
||||
@ -697,6 +681,11 @@ rm -rf ${RPM_BUILD_ROOT}
|
||||
%{_sbindir}/bind-chroot-admin
|
||||
|
||||
%changelog
|
||||
* Mon Jul 30 2007 Adam Tkac <atkac redhat com> 32:9.5.0-8.a6
|
||||
- minor next improvements on autotools patch
|
||||
- dig and host utilities now using libidn instead idnkit for
|
||||
IDN support
|
||||
|
||||
* Wed Jul 25 2007 Warren Togami <wtogami@redhat.com> 32:9.5.0-7.a6
|
||||
- binutils/gcc bug rebuild (#249435)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user