I went to look at the bug Pierre mention earlier and noticed that
dns_get_record isn't implemented on OS X, this looks to be down to the
fact that it has a bind 8 BC layer that we use by default for some
reason. I tried to make it use the bind 9 interface but it wasn't a
simple task as some other things were missing.
End result here is a patch that allows bind 8 to work and therefore OS
X, the main difference is that there is a shared _res structure rather
than a per request one.
I'll apply this tomorrow if no one has any objections.
Scott
? tests/general_functions/escapeshellcmd-win32.phpt
Index: config.m4
===================================================================
RCS file: /repository/php-src/ext/standard/config.m4,v
retrieving revision 1.80.2.3.2.3.2.7
diff -u -r1.80.2.3.2.3.2.7 config.m4
--- config.m4 2 Dec 2008 16:27:15 -0000 1.80.2.3.2.3.2.7
+++ config.m4 7 Jan 2009 03:25:48 -0000
@@ -254,6 +254,14 @@
PHP_CHECK_FUNC(dn_expand, 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
dnl
AC_CACHE_CHECK(whether atof() accepts NAN, ac_cv_atof_accept_nan,[
Index: dns.c
===================================================================
RCS file: /repository/php-src/ext/standard/dns.c,v
retrieving revision 1.70.2.7.2.5.2.14
diff -u -r1.70.2.7.2.5.2.14 dns.c
--- dns.c 6 Jan 2009 23:37:28 -0000 1.70.2.7.2.5.2.14
+++ dns.c 7 Jan 2009 03:25:49 -0000
@@ -357,7 +357,7 @@
* __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;
@@ -663,7 +663,9 @@
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;
@@ -748,11 +750,14 @@
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");
Index: dns.h
===================================================================
RCS file: /repository/php-src/ext/standard/dns.h,v
retrieving revision 1.19.2.1.2.1.2.4
diff -u -r1.19.2.1.2.1.2.4 dns.h
--- dns.h 6 Jan 2009 20:48:20 -0000 1.19.2.1.2.1.2.4
+++ dns.h 7 Jan 2009 03:25:49 -0000
@@ -23,7 +23,18 @@
#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
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php