felipe          Mon Jan 12 14:53:03 2009 UTC

  Modified files:              
    /php-src/ext/standard       dns.c dns_win32.c 
  Log:
  - Reverted my previous commit to avoid unnecessary BC.
  
  [DOC] Added new entry to the array returned by dns_get_record(), 'entries', 
which contains the separated value from TXT value. (so 'txt' kept the 
concatenated version) (Pierre)
  
  - Unicode++ (Felipe)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/dns.c?r1=1.104&r2=1.105&diff_format=u
Index: php-src/ext/standard/dns.c
diff -u php-src/ext/standard/dns.c:1.104 php-src/ext/standard/dns.c:1.105
--- php-src/ext/standard/dns.c:1.104    Sun Jan 11 23:47:52 2009
+++ php-src/ext/standard/dns.c  Mon Jan 12 14:53:03 2009
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: dns.c,v 1.104 2009/01/11 23:47:52 scottmac Exp $ */
+/* $Id: dns.c,v 1.105 2009/01/12 14:53:03 felipe Exp $ */
 
 /* {{{ includes */
 #include "php.h"
@@ -457,28 +457,26 @@
                        break;
                case DNS_T_TXT:
                        {
-                               zval *txtarray = NULL;
                                int ll = 0;
-                               char *txt = NULL;
+                               zval *entries = NULL;
 
                                add_ascii_assoc_rt_string(*subarray, "type", 
"TXT", ZSTR_DUPLICATE);
                                tp = emalloc(dlen + 1);
-                               
-                               MAKE_STD_ZVAL(txtarray);
-                               array_init(txtarray);
+
+                               MAKE_STD_ZVAL(entries);
+                               array_init(entries);
                                
                                while (ll < dlen) {
-                                       txt = tp + ll;
                                        n = cp[ll];
-                                       memcpy(txt, cp + ll + 1, n);
+                                       memcpy(tp + ll, cp + ll + 1, n);
+                                       add_next_index_rt_stringl(entries, cp + 
ll + 1, n, ZSTR_DUPLICATE);
                                        ll = ll + n + 1;
-                                       tp[ll] = '\0';
-                                       add_next_index_rt_stringl(txtarray, 
txt, n, ZSTR_DUPLICATE);
                                }
+                               tp[dlen] = '\0';
                                cp += dlen;
-
-                               add_rt_assoc_zval(*subarray, "txt", txtarray);
-                               efree(tp);
+                               
+                               add_ascii_assoc_rt_stringl(*subarray, "txt", 
tp, dlen - 1, ZSTR_AUTOFREE);
+                               add_ascii_assoc_zval(*subarray, "entries", 
entries);
                        }
                        break;
                case DNS_T_SOA:
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/dns_win32.c?r1=1.5&r2=1.6&diff_format=u
Index: php-src/ext/standard/dns_win32.c
diff -u php-src/ext/standard/dns_win32.c:1.5 
php-src/ext/standard/dns_win32.c:1.6
--- php-src/ext/standard/dns_win32.c:1.5        Sun Jan 11 18:38:00 2009
+++ php-src/ext/standard/dns_win32.c    Mon Jan 12 14:53:03 2009
@@ -153,38 +153,38 @@
        ALLOC_INIT_ZVAL(*subarray);
        array_init(*subarray);
 
-       add_assoc_rt_string(*subarray, "host", pRec->pName, ZSTR_DUPLICATE);
+       add_ascii_assoc_rt_string(*subarray, "host", pRec->pName, 
ZSTR_DUPLICATE);
        switch (type) {
                case DNS_TYPE_A: {
                        IN_ADDR ipaddr;
                        ipaddr.S_un.S_addr = (pRec->Data.A.IpAddress);
-                       add_assoc_rt_string(*subarray, "type", "A", 
ZSTR_DUPLICATE);
-                       add_assoc_rt_string(*subarray, "ip", inet_ntoa(ipaddr), 
ZSTR_DUPLICATE);
+                       add_ascii_assoc_rt_string(*subarray, "type", "A", 
ZSTR_DUPLICATE);
+                       add_ascii_assoc_rt_string(*subarray, "ip", 
inet_ntoa(ipaddr), ZSTR_DUPLICATE);
                        break;
                }
 
                case DNS_TYPE_MX:
-                       add_assoc_rt_string(*subarray, "type", "MX", 
ZSTR_DUPLICATE);
-                       add_assoc_long(*subarray, "pri", 
pRec->Data.Srv.wPriority);
+                       add_ascii_assoc_rt_string(*subarray, "type", "MX", 
ZSTR_DUPLICATE);
+                       add_ascii_assoc_long(*subarray, "pri", 
pRec->Data.Srv.wPriority);
                        /* no break; */
 
                case DNS_TYPE_CNAME:
                        if (type == DNS_TYPE_CNAME) {
-                               add_assoc_rt_string(*subarray, "type", "CNAME", 
ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "type", 
"CNAME", ZSTR_DUPLICATE);
                        }
                        /* no break; */
 
                case DNS_TYPE_NS:
                        if (type == DNS_TYPE_NS) {
-                               add_assoc_rt_string(*subarray, "type", "NS", 
ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "type", 
"NS", ZSTR_DUPLICATE);
                        }
                        /* no break; */
 
                case DNS_TYPE_PTR:
                        if (type == DNS_TYPE_PTR) {
-                               add_assoc_rt_string(*subarray, "type", "PTR", 
ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "type", 
"PTR", ZSTR_DUPLICATE);
                        }
-                       add_assoc_rt_string(*subarray, "target", 
pRec->Data.MX.pNameExchange, ZSTR_DUPLICATE);
+                       add_ascii_assoc_rt_string(*subarray, "target", 
pRec->Data.MX.pNameExchange, ZSTR_DUPLICATE);
                        break;
 
                /* Not available on windows, the query is possible but there is 
no DNS_HINFO_DATA structure */
@@ -194,24 +194,30 @@
                                int i = 0;
                                DNS_TXT_DATA *data_txt = &pRec->Data.TXT;
                                DWORD count = data_txt->dwStringCount;
-                               char *txt;
-                               long txt_len;
-                               zval *txtarray;
-
-                               MAKE_STD_ZVAL(txtarray);
-                               array_init(txtarray);
+                               char *txt, *txt_dst;
+                               long txt_len = 0;
+                               zval *entries;
 
                                add_ascii_assoc_rt_string(*subarray, "type", 
"TXT", ZSTR_DUPLICATE);
+                               
+                               ALLOC_INIT_ZVAL(entries);
+                               array_init(entries);
+
+                               for (i = 0; i < count; i++) {
+                                       txt_len += 
strlen(data_txt->pStringArray[i]) + 1;
+                               }
 
+                               txt = ecalloc(txt_len * 2, 1);
+                               txt_dst = txt;
                                for (i = 0; i < count; i++) {
-                                       txt_len = 
strlen(data_txt->pStringArray[i]);
-                                       txt = emalloc(txt_len + 1);
-                                       memcpy(txt, data_txt->pStringArray[i], 
txt_len);
-                                       txt[txt_len] = '\0';
-                                       add_next_index_rt_stringl(txtarray, 
txt, txt_len, ZSTR_AUTOFREE);
+                                       int len = 
strlen(data_txt->pStringArray[i]);
+                                       memcpy(txt_dst, 
data_txt->pStringArray[i], len);
+                                       add_next_index_rt_stringl(entries, 
data_txt->pStringArray[i], len, ZSTR_DUPLICATE);
+                                       txt_dst += len;
                                }
 
-                               add_assoc_zval(*subarray, "txt", txtarray);
+                               add_ascii_assoc_rt_string(*subarray, "txt", 
txt, ZSTR_AUTOFREE);
+                               add_ascii_assoc_zval(*subarray, "entries", 
entries);
                        }
                        break;
 
@@ -219,15 +225,15 @@
                        {
                                DNS_SOA_DATA *data_soa = &pRec->Data.Soa;
 
-                               add_assoc_rt_string(*subarray, "type", "SOA", 
ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "type", 
"SOA", ZSTR_DUPLICATE);
 
-                               add_assoc_rt_string(*subarray, "mname", 
data_soa->pNamePrimaryServer, ZSTR_DUPLICATE);
-                               add_assoc_rt_string(*subarray, "rname", 
data_soa->pNameAdministrator, ZSTR_DUPLICATE);
-                               add_assoc_long(*subarray, "serial", 
data_soa->dwSerialNo);
-                               add_assoc_long(*subarray, "refresh", 
data_soa->dwRefresh);
-                               add_assoc_long(*subarray, "retry", 
data_soa->dwRetry);
-                               add_assoc_long(*subarray, "expire", 
data_soa->dwExpire);
-                               add_assoc_long(*subarray, "minimum-ttl", 
data_soa->dwDefaultTtl);
+                               add_ascii_assoc_rt_string(*subarray, "mname", 
data_soa->pNamePrimaryServer, ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "rname", 
data_soa->pNameAdministrator, ZSTR_DUPLICATE);
+                               add_ascii_assoc_long(*subarray, "serial", 
data_soa->dwSerialNo);
+                               add_ascii_assoc_long(*subarray, "refresh", 
data_soa->dwRefresh);
+                               add_ascii_assoc_long(*subarray, "retry", 
data_soa->dwRetry);
+                               add_ascii_assoc_long(*subarray, "expire", 
data_soa->dwExpire);
+                               add_ascii_assoc_long(*subarray, "minimum-ttl", 
data_soa->dwDefaultTtl);
                        }
                        break;
 
@@ -237,8 +243,8 @@
                        {
                                LPSTR str[MAXHOSTNAMELEN];
                                DNS_AAAA_DATA *data_aaaa = &pRec->Data.AAAA;
-                               add_assoc_rt_string(*subarray, "type", "AAAA", 
ZSTR_DUPLICATE);
-                               add_assoc_rt_string(*subarray, "ipv6", 
RtlIpv6AddressToString(data_aaaa->Ip6Address, str), ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "type", 
"AAAA", ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "ipv6", 
RtlIpv6AddressToString(data_aaaa->Ip6Address, str), ZSTR_DUPLICATE);
                        }
 #endif
                        break;
@@ -253,11 +259,11 @@
                        {
                                DNS_SRV_DATA *data_srv = &pRec->Data.Srv;
 
-                               add_assoc_rt_string(*subarray, "type", "SRV", 
ZSTR_DUPLICATE);
-                               add_assoc_long(*subarray, "pri", 
data_srv->wPriority);
-                               add_assoc_long(*subarray, "weight", 
data_srv->wWeight);
-                               add_assoc_long(*subarray, "port", 
data_srv->wPort);
-                               add_assoc_rt_string(*subarray, "target", 
data_srv->pNameTarget, ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "type", 
"SRV", ZSTR_DUPLICATE);
+                               add_ascii_assoc_long(*subarray, "pri", 
data_srv->wPriority);
+                               add_ascii_assoc_long(*subarray, "weight", 
data_srv->wWeight);
+                               add_ascii_assoc_long(*subarray, "port", 
data_srv->wPort);
+                               add_ascii_assoc_rt_string(*subarray, "target", 
data_srv->pNameTarget, ZSTR_DUPLICATE);
                        }
                        break;
 
@@ -265,13 +271,13 @@
                        {
 #ifdef DNS_NAPTR_DATA
                                DNS_NAPTR_DATA * data_naptr = &pRec->Data.Naptr;
-                               add_assoc_rt_string(*subarray, "type", "NAPTR", 
ZSTR_DUPLICATE);
-                               add_assoc_long(*subarray, "order", 
data_naptr->wOrder);
-                               add_assoc_long(*subarray, "pref", 
data_naptr->wPreference);
-                               add_assoc_rt_string(*subarray, "flags", 
data_naptr->pFlags, ZSTR_DUPLICATE);
-                               add_assoc_rt_string(*subarray, "services", 
data_naptr->pService, ZSTR_DUPLICATE);
-                               add_assoc_rt_string(*subarray, "regex", 
data_naptr->pRegularExpression, ZSTR_DUPLICATE);
-                               add_assoc_rt_string(*subarray, "replacement", 
data_naptr->pReplacement, ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "type", 
"NAPTR", ZSTR_DUPLICATE);
+                               add_ascii_assoc_long(*subarray, "order", 
data_naptr->wOrder);
+                               add_ascii_assoc_long(*subarray, "pref", 
data_naptr->wPreference);
+                               add_ascii_assoc_rt_string(*subarray, "flags", 
data_naptr->pFlags, ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, 
"services", data_naptr->pService, ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, "regex", 
data_naptr->pRegularExpression, ZSTR_DUPLICATE);
+                               add_ascii_assoc_rt_string(*subarray, 
"replacement", data_naptr->pReplacement, ZSTR_DUPLICATE);
 #endif
                        }
                        break;
@@ -280,8 +286,8 @@
                        break;
        }
 
-       add_assoc_rt_string(*subarray, "class", "IN", ZSTR_DUPLICATE);
-       add_assoc_long(*subarray, "ttl", ttl);
+       add_ascii_assoc_rt_string(*subarray, "class", "IN", ZSTR_DUPLICATE);
+       add_ascii_assoc_long(*subarray, "ttl", ttl);
 }
 /* }}} */
 #endif

Reply via email to