diff options
author | Scott MacVicar <scottmac@php.net> | 2009-01-11 23:47:52 +0000 |
---|---|---|
committer | Scott MacVicar <scottmac@php.net> | 2009-01-11 23:47:52 +0000 |
commit | 4c66135f5badbe1f6fdff96550bafe2e2acb4771 (patch) | |
tree | 706c653f41e02e8a89854b8f9d8f195455a126b8 | |
parent | 371cecee32dc1426db458e463262e32881cf5277 (diff) | |
download | php-git-4c66135f5badbe1f6fdff96550bafe2e2acb4771.tar.gz |
MFB Add support for the older style bind 8 functions, this adds support for OS X to use all of the dns_* functions.
-rw-r--r-- | configure.in | 6 | ||||
-rw-r--r-- | ext/standard/config.m4 | 10 | ||||
-rw-r--r-- | ext/standard/dns.c | 9 | ||||
-rw-r--r-- | ext/standard/dns.h | 14 |
4 files changed, 30 insertions, 9 deletions
diff --git a/configure.in b/configure.in index f0092397a6..c1bad130eb 100644 --- a/configure.in +++ b/configure.in @@ -398,15 +398,9 @@ if test "$ac_cv_func_dlopen" = "yes"; then fi AC_CHECK_LIB(m, sin) -dnl Check for resolver routines. -dnl Need to check for both res_search and __res_search -dnl in -lc, -lbind, -lresolv and -lsocket -PHP_CHECK_FUNC(res_search, resolv, bind, socket) - dnl Check for inet_aton and dn_skipname dnl in -lc, -lbind and -lresolv PHP_CHECK_FUNC(inet_aton, resolv, bind) -PHP_CHECK_FUNC(dn_skipname, resolv, bind) dnl Then headers. diff --git a/ext/standard/config.m4 b/ext/standard/config.m4 index 50bd1dc7af..042e1ccd6b 100644 --- a/ext/standard/config.m4 +++ b/ext/standard/config.m4 @@ -251,7 +251,17 @@ dnl ext/standard/dns.h will collect these in a single define: HAVE_DNS_FUNCS dnl PHP_CHECK_FUNC(res_nmkquery, resolv, bind, socket) PHP_CHECK_FUNC(res_nsend, resolv, bind, socket) +PHP_CHECK_FUNC(res_search, resolv, bind, socket) PHP_CHECK_FUNC(dn_expand, resolv, bind, socket) +PHP_CHECK_FUNC(dn_skipname, resolv, bind, socket) + +dnl +dnl These are old deprecated functions, a single define of HAVE_DEPRECATED_DNS_FUNCS +dnl will be set in ext/standard/dns.h +dnl + +PHP_CHECK_FUNC(res_mkquery, resolv, bind, socket) +PHP_CHECK_FUNC(res_send, resolv, bind, socket) dnl dnl Check if atof() accepts NAN diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 6a2f15a307..374d366c44 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -358,7 +358,7 @@ typedef union { * __libc_res_nsend() in resolv/res_send.c * */ -#ifdef __GLIBC__ +#if defined(__GLIBC__) && !defined(HAVE_DEPRECATED_DNS_FUNCS) #define php_dns_free_res(__res__) _php_dns_free_res(__res__) static void _php_dns_free_res(struct __res_state res) { /* {{{ */ int ns; @@ -672,7 +672,9 @@ PHP_FUNCTION(dns_get_record) zval *authns = NULL, *addtl = NULL; int addtl_recs = 0; int type_to_fetch; +#if !defined(HAVE_DEPRECATED_DNS_FUNCS) struct __res_state res; +#endif HEADER *hp; querybuf buf, answer; u_char *cp = NULL, *end = NULL; @@ -757,11 +759,14 @@ PHP_FUNCTION(dns_get_record) break; } if (type_to_fetch) { +#if defined(HAVE_DEPRECATED_DNS_FUNCS) + res_init(); +#else memset(&res, 0, sizeof(res)); res_ninit(&res); res.retrans = 5; res.options &= ~RES_DEFNAMES; - +#endif n = res_nmkquery(&res, QUERY, hostname, C_IN, type_to_fetch, NULL, 0, NULL, buf.qb2, sizeof buf); if (n<0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "res_nmkquery() failed"); diff --git a/ext/standard/dns.h b/ext/standard/dns.h index 758e8af82a..81db75975c 100644 --- a/ext/standard/dns.h +++ b/ext/standard/dns.h @@ -23,7 +23,19 @@ #ifndef DNS_H #define DNS_H -#if HAVE_RES_NMKQUERY && HAVE_RES_NSEND && HAVE_DN_EXPAND && HAVE_DN_SKIPNAME +#if HAVE_RES_MKQUERY && !defined(HAVE_RES_NMKQUERY) && HAVE_RES_SEND && !defined(HAVE_RES_NSEND) +#define HAVE_DEPRECATED_DNS_FUNCS 1 +#endif + +#if HAVE_DEPRECATED_DNS_FUNCS +#define res_nmkquery(res, op, dname, class, type, data, datalen, newrr, buf, buflen) \ + res_mkquery(op, dname, class, type, data, datalen, newrr, buf, buflen) +#define res_nsend(res, msg, msglen, answer, anslen) \ + res_send(msg, msglen, answer, anslen); +#define res_nclose(res) /* noop */ +#endif + +#if ((HAVE_RES_NMKQUERY && HAVE_RES_NSEND) || HAVE_DEPRECATED_DNS_FUNCS) && HAVE_DN_EXPAND && HAVE_DN_SKIPNAME #define HAVE_DNS_FUNCS 1 #endif |