mirror of
https://github.com/isc-projects/bind9.git
synced 2026-04-24 07:41:10 -04:00
1916. [func] Integrate contibuted IDN code from JPNIC. [RT #15383]
This commit is contained in:
parent
cae2cb0862
commit
6cf369f528
10 changed files with 752 additions and 41 deletions
|
|
@ -18,7 +18,7 @@
|
|||
- PERFORMANCE OF THIS SOFTWARE.
|
||||
-->
|
||||
|
||||
<!-- $Id: dig.docbook,v 1.26 2005/08/30 00:45:08 marka Exp $ -->
|
||||
<!-- $Id: dig.docbook,v 1.27 2005/09/09 06:13:58 marka Exp $ -->
|
||||
<refentry id="man.dig">
|
||||
|
||||
<refentryinfo>
|
||||
|
|
@ -874,6 +874,21 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr
|
|||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>IDN SUPPORT</title>
|
||||
<para>
|
||||
If <command>dig</command> has been built with IDN (internationalized
|
||||
domain name) support, it can accept and display non-ASCII domain names.
|
||||
<command>dig</command> appropriately converts character encoding of
|
||||
domain name before sending a request to DNS server or displaying a
|
||||
reply from the server.
|
||||
If you'd like to turn off the IDN support for some reason, defines
|
||||
the <envar>IDN_DISABLE</envar> environment variable.
|
||||
The IDN support is disabled if the variable is set when
|
||||
<command>dig</command> runs.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>FILES</title>
|
||||
<para><filename>/etc/resolv.conf</filename>
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dighost.c,v 1.285 2005/09/08 23:59:45 marka Exp $ */
|
||||
/* $Id: dighost.c,v 1.286 2005/09/09 06:13:59 marka Exp $ */
|
||||
|
||||
/*! \file
|
||||
* \note
|
||||
|
|
@ -33,6 +33,17 @@
|
|||
#include <string.h>
|
||||
#include <limits.h>
|
||||
|
||||
#ifdef HAVE_LOCALE_H
|
||||
#include <locale.h>
|
||||
#endif
|
||||
|
||||
#ifdef WITH_IDN
|
||||
#include <idn/result.h>
|
||||
#include <idn/log.h>
|
||||
#include <idn/resconf.h>
|
||||
#include <idn/api.h>
|
||||
#endif
|
||||
|
||||
#include <dns/byaddr.h>
|
||||
#ifdef DIG_SIGCHASE
|
||||
#include <dns/dnssec.h>
|
||||
|
|
@ -123,6 +134,18 @@ int ndots = -1;
|
|||
int tries = 3;
|
||||
int lookup_counter = 0;
|
||||
|
||||
#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
|
||||
|
||||
/*%
|
||||
* Exit Codes:
|
||||
*
|
||||
|
|
@ -992,6 +1015,10 @@ setup_system(void) {
|
|||
if (ISC_LIST_EMPTY(server_list))
|
||||
copy_server_list(lwconf, &server_list);
|
||||
|
||||
#ifdef WITH_IDN
|
||||
initialize_idn();
|
||||
#endif
|
||||
|
||||
if (keyfile[0] != 0)
|
||||
setup_file_key();
|
||||
else if (keysecret[0] != 0)
|
||||
|
|
@ -1650,6 +1677,15 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||
isc_buffer_t b;
|
||||
dns_compress_t cctx;
|
||||
char store[MXNAME];
|
||||
#ifdef WITH_IDN
|
||||
idn_result_t mr;
|
||||
char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME];
|
||||
#endif
|
||||
|
||||
#ifdef WITH_IDN
|
||||
result = dns_name_settotextfilter(output_filter);
|
||||
check_result(result, "dns_name_settotextfilter");
|
||||
#endif
|
||||
|
||||
REQUIRE(lookup != NULL);
|
||||
INSIST(!free_now);
|
||||
|
|
@ -1678,6 +1714,17 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||
isc_buffer_init(&lookup->onamebuf, lookup->onamespace,
|
||||
sizeof(lookup->onamespace));
|
||||
|
||||
#ifdef WITH_IDN
|
||||
/*
|
||||
* We cannot convert `textname' and `origin' separately.
|
||||
* `textname' doesn't contain TLD, but local mapping needs
|
||||
* TLD.
|
||||
*/
|
||||
mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname,
|
||||
utf8_textname, sizeof(utf8_textname));
|
||||
idn_check_result(mr, "convert textname to UTF-8");
|
||||
#endif
|
||||
|
||||
/*
|
||||
* If the name has too many dots, force the origin to be NULL
|
||||
* (which produces an absolute lookup). Otherwise, take the origin
|
||||
|
|
@ -1686,11 +1733,33 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||
* is TRUE or we got a domain line in the resolv.conf file.
|
||||
*/
|
||||
/* XXX New search here? */
|
||||
#ifdef WITH_IDN
|
||||
if ((count_dots(utf8_textname) >= ndots) || !usesearch)
|
||||
lookup->origin = NULL; /* Force abs lookup */
|
||||
else if (lookup->origin == NULL && lookup->new_search && usesearch)
|
||||
lookup->origin = ISC_LIST_HEAD(search_list);
|
||||
#else
|
||||
if ((count_dots(lookup->textname) >= ndots) || !usesearch)
|
||||
lookup->origin = NULL; /* Force abs lookup */
|
||||
else if (lookup->origin == NULL && lookup->new_search && usesearch)
|
||||
lookup->origin = ISC_LIST_HEAD(search_list);
|
||||
#endif
|
||||
|
||||
#ifdef WITH_IDN
|
||||
if (lookup->origin != NULL) {
|
||||
mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP,
|
||||
lookup->origin->origin, utf8_origin,
|
||||
sizeof(utf8_origin));
|
||||
idn_check_result(mr, "convert origin to UTF-8");
|
||||
mr = append_textname(utf8_textname, utf8_origin,
|
||||
sizeof(utf8_textname));
|
||||
idn_check_result(mr, "append origin to textname");
|
||||
}
|
||||
mr = idn_encodename(IDN_LOCALMAP | IDN_NAMEPREP | IDN_ASCCHECK |
|
||||
IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
|
||||
idn_textname, sizeof(idn_textname));
|
||||
idn_check_result(mr, "convert UTF-8 textname to IDN encoding");
|
||||
#else
|
||||
if (lookup->origin != NULL) {
|
||||
debug("trying origin %s", lookup->origin->origin);
|
||||
result = dns_message_gettempname(lookup->sendmsg,
|
||||
|
|
@ -1731,11 +1800,22 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||
lookup->textname, isc_result_totext(result));
|
||||
}
|
||||
dns_message_puttempname(lookup->sendmsg, &lookup->oname);
|
||||
} else {
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
debug("using root origin");
|
||||
if (lookup->trace && lookup->trace_root)
|
||||
dns_name_clone(dns_rootname, lookup->name);
|
||||
else {
|
||||
#ifdef WITH_IDN
|
||||
len = strlen(idn_textname);
|
||||
isc_buffer_init(&b, idn_textname, len);
|
||||
isc_buffer_add(&b, len);
|
||||
result = dns_name_fromtext(lookup->name, &b,
|
||||
dns_rootname,
|
||||
ISC_FALSE,
|
||||
&lookup->namebuf);
|
||||
#else
|
||||
len = strlen(lookup->textname);
|
||||
isc_buffer_init(&b, lookup->textname, len);
|
||||
isc_buffer_add(&b, len);
|
||||
|
|
@ -1743,6 +1823,7 @@ setup_lookup(dig_lookup_t *lookup) {
|
|||
dns_rootname,
|
||||
ISC_FALSE,
|
||||
&lookup->namebuf);
|
||||
#endif
|
||||
}
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
dns_message_puttempname(lookup->sendmsg,
|
||||
|
|
@ -3249,8 +3330,104 @@ destroy_libs(void) {
|
|||
isc_mem_destroy(&mctx);
|
||||
}
|
||||
|
||||
|
||||
#ifdef WITH_IDN
|
||||
static void
|
||||
initialize_idn(void) {
|
||||
idn_result_t r;
|
||||
isc_result_t result;
|
||||
|
||||
#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. */
|
||||
result = dns_name_settotextfilter(output_filter);
|
||||
check_result(result, "dns_name_settotextfilter");
|
||||
}
|
||||
|
||||
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 */
|
||||
|
||||
#ifdef DIG_SIGCHASE
|
||||
void
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
- PERFORMANCE OF THIS SOFTWARE.
|
||||
-->
|
||||
|
||||
<!-- $Id: host.docbook,v 1.11 2005/08/25 00:31:32 marka Exp $ -->
|
||||
<!-- $Id: host.docbook,v 1.12 2005/09/09 06:13:59 marka Exp $ -->
|
||||
<refentry id="man.host">
|
||||
|
||||
<refentryinfo>
|
||||
|
|
@ -237,6 +237,21 @@
|
|||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>IDN SUPPORT</title>
|
||||
<para>
|
||||
If <command>host</command> has been built with IDN (internationalized
|
||||
domain name) support, it can accept and display non-ASCII domain names.
|
||||
<command>host</command> appropriately converts character encoding of
|
||||
domain name before sending a request to DNS server or displaying a
|
||||
reply from the server.
|
||||
If you'd like to turn off the IDN support for some reason, defines
|
||||
the <envar>IDN_DISABLE</envar> environment variable.
|
||||
The IDN support is disabled if the variable is set when
|
||||
<command>host</command> runs.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>FILES</title>
|
||||
<para><filename>/etc/resolv.conf</filename>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: config.h.in,v 1.71 2005/09/09 06:13:57 marka Exp $ */
|
||||
/* $Id: config.h.in,v 1.75 2005/10/20 23:50:53 marka Exp $ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
|
|
|
|||
417
configure
vendored
417
configure
vendored
|
|
@ -14,7 +14,7 @@
|
|||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
#
|
||||
# $Id: configure,v 1.381 2005/09/05 00:12:29 marka Exp $
|
||||
# $Id: configure,v 1.382 2005/09/09 06:17:03 marka Exp $
|
||||
#
|
||||
# Portions Copyright (C) 1996-2001 Nominum, Inc.
|
||||
#
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
# From configure.in Revision: 1.392 .
|
||||
# From configure.in Revision: 1.393 .
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.59.
|
||||
#
|
||||
|
|
@ -495,7 +495,7 @@ ac_includes_default="\
|
|||
# include <unistd.h>
|
||||
#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 LN_S 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_HAVELIFCONF ISC_PLATFORM_NEEDSYSSELECTH LWRES_PLATFORM_NEEDSYSSELECTH USE_OPENSSL DST_OPENSSL_INC USE_GSSAPI DST_GSSAPI_INC DNS_CRYPTO_LIBS ALWAYS_DEFINES ISC_PLATFORM_USETHREADS ISC_THREAD_DIR MKDEPCC MKDEPCFLAGS MKDEPPROG IRIX_DNSSEC_WARNINGS_HACK purify_path PURIFY 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 ISC_PLATFORM_HAVESCOPEID ISC_PLATFORM_HAVEIF_LADDRREQ ISC_PLATFORM_HAVEIF_LADDRCONF 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_NEEDMEMMOVE ISC_PLATFORM_NEEDSTRTOUL LWRES_PLATFORM_NEEDSTRTOUL GENRANDOMLIB ISC_PLATFORM_NEEDSTRLCPY ISC_PLATFORM_NEEDSTRLCAT ISC_PLATFORM_NEEDSPRINTF LWRES_PLATFORM_NEEDSPRINTF ISC_PLATFORM_NEEDVSNPRINTF LWRES_PLATFORM_NEEDVSNPRINTF ISC_EXTRA_OBJS ISC_EXTRA_SRCS ISC_PLATFORM_QUADFORMAT LWRES_PLATFORM_QUADFORMAT ISC_PLATFORM_HAVESYSUNH ISC_PLATFORM_RLIMITTYPE ISC_PLATFORM_USEDECLSPEC LWRES_PLATFORM_USEDECLSPEC ISC_PLATFORM_BRACEPTHREADONCEINIT ISC_PLATFORM_HAVEIFNAMETOINDEX ISC_PLATFORM_HAVEXADD ISC_PLATFORM_HAVECMPXCHG ISC_PLATFORM_HAVEATOMICSTORE ISC_PLATFORM_USEGCCASM ISC_PLATFORM_USEOSFASM ISC_PLATFORM_USESTDASM ISC_ARCH_DIR LATEX PDFLATEX W3M XSLTPROC XMLLINT XSLT_DOCBOOK_STYLE_HTML XSLT_DOCBOOK_STYLE_XHTML XSLT_DOCBOOK_STYLE_MAN XSLT_DOCBOOK_CHUNK_HTML XSLT_DOCBOOK_CHUNK_XHTML XSLT_DOCBOOK_CHUNKTOC_HTML XSLT_DOCBOOK_CHUNKTOC_XHTML XSLT_DOCBOOK_MAKETOC_HTML XSLT_DOCBOOK_MAKETOC_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_BIND9_BUILDINCLUDE BIND9_VERSION PG_CONFIG USE_DLZ DLZ_DRIVER_INCLUDES DLZ_DRIVER_LIBS DLZ_DRIVER_SRCS DLZ_DRIVER_OBJS 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 LN_S 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_HAVELIFCONF ISC_PLATFORM_NEEDSYSSELECTH LWRES_PLATFORM_NEEDSYSSELECTH USE_OPENSSL DST_OPENSSL_INC USE_GSSAPI DST_GSSAPI_INC DNS_CRYPTO_LIBS ALWAYS_DEFINES ISC_PLATFORM_USETHREADS ISC_THREAD_DIR MKDEPCC MKDEPCFLAGS MKDEPPROG IRIX_DNSSEC_WARNINGS_HACK purify_path PURIFY 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 ISC_PLATFORM_HAVESCOPEID ISC_PLATFORM_HAVEIF_LADDRREQ ISC_PLATFORM_HAVEIF_LADDRCONF 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_NEEDMEMMOVE ISC_PLATFORM_NEEDSTRTOUL LWRES_PLATFORM_NEEDSTRTOUL GENRANDOMLIB ISC_PLATFORM_NEEDSTRLCPY ISC_PLATFORM_NEEDSTRLCAT ISC_PLATFORM_NEEDSPRINTF LWRES_PLATFORM_NEEDSPRINTF ISC_PLATFORM_NEEDVSNPRINTF LWRES_PLATFORM_NEEDVSNPRINTF ISC_EXTRA_OBJS ISC_EXTRA_SRCS ISC_PLATFORM_QUADFORMAT LWRES_PLATFORM_QUADFORMAT ISC_PLATFORM_HAVESYSUNH ISC_PLATFORM_RLIMITTYPE ISC_PLATFORM_USEDECLSPEC LWRES_PLATFORM_USEDECLSPEC ISC_PLATFORM_BRACEPTHREADONCEINIT ISC_PLATFORM_HAVEIFNAMETOINDEX ISC_PLATFORM_HAVEXADD ISC_PLATFORM_HAVECMPXCHG ISC_PLATFORM_HAVEATOMICSTORE ISC_PLATFORM_USEGCCASM ISC_PLATFORM_USEOSFASM ISC_PLATFORM_USESTDASM ISC_ARCH_DIR LATEX PDFLATEX W3M XSLTPROC XMLLINT XSLT_DOCBOOK_STYLE_HTML XSLT_DOCBOOK_STYLE_XHTML XSLT_DOCBOOK_STYLE_MAN XSLT_DOCBOOK_CHUNK_HTML XSLT_DOCBOOK_CHUNK_XHTML XSLT_DOCBOOK_CHUNKTOC_HTML XSLT_DOCBOOK_CHUNKTOC_XHTML XSLT_DOCBOOK_MAKETOC_HTML XSLT_DOCBOOK_MAKETOC_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_BIND9_BUILDINCLUDE BIND9_VERSION PG_CONFIG USE_DLZ DLZ_DRIVER_INCLUDES DLZ_DRIVER_LIBS DLZ_DRIVER_SRCS DLZ_DRIVER_OBJS LIBOBJS LTLIBOBJS'
|
||||
ac_subst_files='BIND9_MAKE_INCLUDES BIND9_MAKE_RULES LIBISC_API LIBISCCC_API LIBISCCFG_API LIBDNS_API LIBBIND9_API LIBLWRES_API DLZ_DRIVER_RULES'
|
||||
|
||||
# Initialize some variables set by options.
|
||||
|
|
@ -1082,6 +1082,10 @@ Optional Packages:
|
|||
--with-tags[=TAGS]
|
||||
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
|
||||
--with-dlz-postgres=PATH Build with Postgres DLZ driver yes|no|path.
|
||||
(Required to use Postgres with DLZ)
|
||||
--with-dlz-mysql=PATH Build with MySQL DLZ driver yes|no|path.
|
||||
|
|
@ -8157,7 +8161,7 @@ ia64-*-hpux*)
|
|||
;;
|
||||
*-*-irix6*)
|
||||
# Find out which ABI we are using.
|
||||
echo '#line 8160 "configure"' > conftest.$ac_ext
|
||||
echo '#line 8164 "configure"' > conftest.$ac_ext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
|
||||
(eval $ac_compile) 2>&5
|
||||
ac_status=$?
|
||||
|
|
@ -9154,7 +9158,7 @@ fi
|
|||
|
||||
|
||||
# Provide some information about the compiler.
|
||||
echo "$as_me:9157:" \
|
||||
echo "$as_me:9161:" \
|
||||
"checking for Fortran 77 compiler version" >&5
|
||||
ac_compiler=`set X $ac_compile; echo $2`
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
|
||||
|
|
@ -10215,11 +10219,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:10218: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:10222: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:10222: \$? = $ac_status" >&5
|
||||
echo "$as_me:10226: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings
|
||||
|
|
@ -10458,11 +10462,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:10461: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:10465: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:10465: \$? = $ac_status" >&5
|
||||
echo "$as_me:10469: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings
|
||||
|
|
@ -10518,11 +10522,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:10521: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:10525: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>out/conftest.err)
|
||||
ac_status=$?
|
||||
cat out/conftest.err >&5
|
||||
echo "$as_me:10525: \$? = $ac_status" >&5
|
||||
echo "$as_me:10529: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s out/conftest2.$ac_objext
|
||||
then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
|
|
@ -12703,7 +12707,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 12706 "configure"
|
||||
#line 12710 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
|
@ -12801,7 +12805,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 12804 "configure"
|
||||
#line 12808 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
|
@ -14998,11 +15002,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:15001: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:15005: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:15005: \$? = $ac_status" >&5
|
||||
echo "$as_me:15009: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings
|
||||
|
|
@ -15058,11 +15062,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:15061: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:15065: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>out/conftest.err)
|
||||
ac_status=$?
|
||||
cat out/conftest.err >&5
|
||||
echo "$as_me:15065: \$? = $ac_status" >&5
|
||||
echo "$as_me:15069: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s out/conftest2.$ac_objext
|
||||
then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
|
|
@ -16419,7 +16423,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 16422 "configure"
|
||||
#line 16426 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
|
@ -16517,7 +16521,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 16520 "configure"
|
||||
#line 16524 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
|
@ -17354,11 +17358,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:17357: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:17361: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:17361: \$? = $ac_status" >&5
|
||||
echo "$as_me:17365: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings
|
||||
|
|
@ -17414,11 +17418,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:17417: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:17421: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>out/conftest.err)
|
||||
ac_status=$?
|
||||
cat out/conftest.err >&5
|
||||
echo "$as_me:17421: \$? = $ac_status" >&5
|
||||
echo "$as_me:17425: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s out/conftest2.$ac_objext
|
||||
then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
|
|
@ -19453,11 +19457,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:19456: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:19460: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:19460: \$? = $ac_status" >&5
|
||||
echo "$as_me:19464: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings
|
||||
|
|
@ -19696,11 +19700,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:19699: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:19703: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>conftest.err)
|
||||
ac_status=$?
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:19703: \$? = $ac_status" >&5
|
||||
echo "$as_me:19707: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s "$ac_outfile"; then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
# So say no if there are warnings
|
||||
|
|
@ -19756,11 +19760,11 @@ else
|
|||
-e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
|
||||
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
|
||||
-e 's:$: $lt_compiler_flag:'`
|
||||
(eval echo "\"\$as_me:19759: $lt_compile\"" >&5)
|
||||
(eval echo "\"\$as_me:19763: $lt_compile\"" >&5)
|
||||
(eval "$lt_compile" 2>out/conftest.err)
|
||||
ac_status=$?
|
||||
cat out/conftest.err >&5
|
||||
echo "$as_me:19763: \$? = $ac_status" >&5
|
||||
echo "$as_me:19767: \$? = $ac_status" >&5
|
||||
if (exit $ac_status) && test -s out/conftest2.$ac_objext
|
||||
then
|
||||
# The compiler can only warn and ignore the option if not recognized
|
||||
|
|
@ -21941,7 +21945,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 21944 "configure"
|
||||
#line 21948 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
|
@ -22039,7 +22043,7 @@ else
|
|||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||
lt_status=$lt_dlunknown
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#line 22042 "configure"
|
||||
#line 22046 "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
|
|
@ -28358,6 +28362,356 @@ echo "${ECHO_T}not found" >&6
|
|||
fi
|
||||
|
||||
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
|
@ -29956,6 +30310,7 @@ s,@XSLT_DOCBOOK_MAKETOC_HTML@,$XSLT_DOCBOOK_MAKETOC_HTML,;t t
|
|||
s,@XSLT_DOCBOOK_MAKETOC_XHTML@,$XSLT_DOCBOOK_MAKETOC_XHTML,;t t
|
||||
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
|
||||
s,@BIND9_ISCCC_BUILDINCLUDE@,$BIND9_ISCCC_BUILDINCLUDE,;t t
|
||||
|
|
|
|||
78
configure.in
78
configure.in
|
|
@ -18,7 +18,7 @@ AC_DIVERT_PUSH(1)dnl
|
|||
esyscmd([sed "s/^/# /" COPYRIGHT])dnl
|
||||
AC_DIVERT_POP()dnl
|
||||
|
||||
AC_REVISION($Revision: 1.392 $)
|
||||
AC_REVISION($Revision: 1.393 $)
|
||||
|
||||
AC_INIT(lib/dns/name.c)
|
||||
AC_PREREQ(2.59)
|
||||
|
|
@ -2133,6 +2133,82 @@ then
|
|||
fi
|
||||
AC_SUBST(XSLT_DB2LATEX_ADMONITIONS)
|
||||
|
||||
#
|
||||
# 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
|
||||
#
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: name.h,v 1.117 2005/09/05 00:11:03 marka Exp $ */
|
||||
/* $Id: name.h,v 1.118 2005/09/09 06:14:00 marka Exp $ */
|
||||
|
||||
#ifndef DNS_NAME_H
|
||||
#define DNS_NAME_H 1
|
||||
|
|
@ -156,6 +156,15 @@ LIBDNS_EXTERNAL_DATA extern dns_name_t *dns_wildcardname;
|
|||
*/
|
||||
#define DNS_NAME_MAXWIRE 255
|
||||
|
||||
/*
|
||||
* 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);
|
||||
|
||||
/***
|
||||
*** Initialization
|
||||
***/
|
||||
|
|
@ -1117,6 +1126,17 @@ dns_name_format(dns_name_t *name, char *cp, unsigned int size);
|
|||
*
|
||||
*/
|
||||
|
||||
isc_result_t
|
||||
dns_name_settotextfilter(dns_name_totextfilter_t proc);
|
||||
/*%<
|
||||
* Set / clear a thread specific function 'proc' to be called at the
|
||||
* end of dns_name_totext().
|
||||
*
|
||||
* Returns
|
||||
*\li #ISC_R_SUCCESS
|
||||
*\li #ISC_R_UNEXPECTED
|
||||
*/
|
||||
|
||||
#define DNS_NAME_FORMATSIZE (DNS_NAME_MAXTEXT + 1)
|
||||
/*%<
|
||||
* Suggested size of buffer passed to dns_name_format().
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: name.c,v 1.151 2005/07/20 01:46:49 marka Exp $ */
|
||||
/* $Id: name.c,v 1.152 2005/09/09 06:13:59 marka Exp $ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
|
|
@ -26,8 +26,10 @@
|
|||
#include <isc/buffer.h>
|
||||
#include <isc/hash.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/once.h>
|
||||
#include <isc/print.h>
|
||||
#include <isc/string.h>
|
||||
#include <isc/thread.h>
|
||||
#include <isc/util.h>
|
||||
|
||||
#include <dns/compress.h>
|
||||
|
|
@ -184,6 +186,15 @@ LIBDNS_EXTERNAL_DATA dns_name_t *dns_wildcardname = &wild;
|
|||
unsigned int
|
||||
dns_fullname_hash(dns_name_t *name, isc_boolean_t case_sensitive);
|
||||
|
||||
/*
|
||||
* dns_name_t to text post-conversion procedure.
|
||||
*/
|
||||
#ifdef ISC_PLATFORM_USETHREADS
|
||||
static isc_thread_key_t totext_filter_proc_key;
|
||||
#else
|
||||
static dns_name_totextfilter_t totext_filter_proc = NULL;
|
||||
#endif
|
||||
|
||||
static void
|
||||
set_offsets(const dns_name_t *name, unsigned char *offsets,
|
||||
dns_name_t *set_name);
|
||||
|
|
@ -1273,6 +1284,10 @@ dns_name_totext(dns_name_t *name, isc_boolean_t omit_final_dot,
|
|||
unsigned int trem, count;
|
||||
unsigned int labels;
|
||||
isc_boolean_t saw_root = ISC_FALSE;
|
||||
unsigned int oused = target->used;
|
||||
#ifdef ISC_PLATFORM_USETHREADS
|
||||
dns_name_totextfilter_t totext_filter_proc;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This function assumes the name is in proper uncompressed
|
||||
|
|
@ -1412,6 +1427,12 @@ dns_name_totext(dns_name_t *name, isc_boolean_t omit_final_dot,
|
|||
|
||||
isc_buffer_add(target, tlen - trem);
|
||||
|
||||
#ifdef ISC_PLATFORM_USETHREADS
|
||||
totext_filter_proc = isc_key_getspecific(totext_filter_proc_key);
|
||||
#endif
|
||||
if (totext_filter_proc != NULL)
|
||||
return ((*totext_filter_proc)(target, oused, saw_root));
|
||||
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
|
|
@ -2193,6 +2214,31 @@ dns_name_print(dns_name_t *name, FILE *stream) {
|
|||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
#ifdef ISC_PLATFORM_USETHREADS
|
||||
static void
|
||||
totext_filter_proc_key_init(void) {
|
||||
RUNTIME_CHECK(isc_key_create(&totext_filter_proc_key, NULL) == 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
isc_result_t
|
||||
dns_name_settotextfilter(dns_name_totextfilter_t proc) {
|
||||
#ifdef ISC_PLATFORM_USETHREADS
|
||||
static isc_once_t once = ISC_ONCE_INIT;
|
||||
isc_result_t result;
|
||||
|
||||
result = isc_once_do(&once, totext_filter_proc_key_init);
|
||||
if (result != ISC_R_SUCCESS)
|
||||
return (result);
|
||||
if (isc_key_setspecific(totext_filter_proc_key, proc) != 0)
|
||||
result = ISC_R_UNEXPECTED;
|
||||
return (result);
|
||||
#else
|
||||
totext_filter_proc = proc;
|
||||
return (ISC_R_SUCCESS);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
dns_name_format(dns_name_t *name, char *cp, unsigned int size) {
|
||||
isc_result_t result;
|
||||
|
|
|
|||
|
|
@ -329,6 +329,7 @@ dns_name_print
|
|||
dns_name_rdatacompare
|
||||
dns_name_reset
|
||||
dns_name_setbuffer
|
||||
dns_name_settotextfilter
|
||||
dns_name_split
|
||||
dns_name_tofilenametext
|
||||
dns_name_toregion
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: thread.h,v 1.22 2005/04/29 00:23:49 marka Exp $ */
|
||||
/* $Id: thread.h,v 1.23 2005/09/09 06:14:00 marka Exp $ */
|
||||
|
||||
#ifndef ISC_THREAD_H
|
||||
#define ISC_THREAD_H 1
|
||||
|
|
@ -33,6 +33,7 @@ typedef pthread_t isc_thread_t;
|
|||
typedef void * isc_threadresult_t;
|
||||
typedef void * isc_threadarg_t;
|
||||
typedef isc_threadresult_t (*isc_threadfunc_t)(isc_threadarg_t);
|
||||
typedef pthread_key_t isc_thread_key_t;
|
||||
|
||||
isc_result_t
|
||||
isc_thread_create(isc_threadfunc_t, isc_threadarg_t, isc_thread_t *);
|
||||
|
|
@ -49,6 +50,11 @@ isc_thread_setconcurrency(unsigned int level);
|
|||
#define isc_thread_self \
|
||||
(unsigned long)pthread_self
|
||||
|
||||
#define isc_key_create pthread_key_create
|
||||
#define isc_key_getspecific pthread_getspecific
|
||||
#define isc_key_setspecific pthread_setspecific
|
||||
#define isc_key_delete pthread_key_delete
|
||||
|
||||
ISC_LANG_ENDDECLS
|
||||
|
||||
#endif /* ISC_THREAD_H */
|
||||
|
|
|
|||
Loading…
Reference in a new issue