am 85a01ff: Merge change 57 into donut

Merge commit '85a01ffba337b123436f57eba4daae38c7c90d1e'

* commit '85a01ffba337b123436f57eba4daae38c7c90d1e':
  Add the domain search list for VPN connection.
diff --git a/libc/netbsd/resolv/res_init.c b/libc/netbsd/resolv/res_init.c
index fc0272c..751603d 100644
--- a/libc/netbsd/resolv/res_init.c
+++ b/libc/netbsd/resolv/res_init.c
@@ -112,6 +112,7 @@
 #define MAX_DNS_PROPERTIES 8
 #define DNS_PROP_NAME_PREFIX "net.dns"
 #define DNS_CHANGE_PROP_NAME "net.dnschange"
+#define DNS_SEARCH_PROP_NAME "net.dns.search"
 const prop_info *dns_change_prop;
 int dns_last_change_counter;
 static int _get_dns_change_count();
@@ -168,6 +169,39 @@
 	return (__res_vinit(statp, 0));
 }
 
+#ifdef ANDROID_CHANGES
+int load_domain_search_list(res_state statp) {
+	char propvalue[PROP_VALUE_MAX];
+	register char *cp, **pp;
+
+	if(__system_property_get(DNS_SEARCH_PROP_NAME, propvalue) >= 1) {
+		strlcpy(statp->defdname, propvalue, sizeof(statp->defdname));
+		if ((cp = strchr(statp->defdname, '\n')) != NULL)
+			*cp = '\0';
+		cp = statp->defdname;
+		pp = statp->dnsrch;
+		while ( pp < statp->dnsrch + MAXDNSRCH ) {
+			while (*cp == ' ' || *cp == '\t') /* skip leading white space */
+				cp++;
+			if (*cp == '\0')  /* stop if nothing more */
+				break;
+			*pp++ = cp;  /* record this search domain */
+			while (*cp) { /* zero-terminate it */
+				if (*cp == ' ' || *cp == '\t') {
+					*cp++ = '\0';
+					break;
+				}
+				cp++;
+			}
+		}
+		*pp = NULL; /* statp->dnsrch has MAXDNSRCH+1 items */
+		if (pp > statp->dnsrch)
+			return 1;
+	}
+	return 0;
+}
+#endif
+
 /* This function has to be reachable by res_data.c but not publicly. */
 int
 __res_vinit(res_state statp, int preinit) {
@@ -344,6 +378,9 @@
 			}
 		}
 	}
+
+	/* Add the domain search list */
+	havesearch = load_domain_search_list(statp);
 #else /* IGNORE resolv.conf */
 #define	MATCH(line, name) \
 	(!strncmp(line, name, sizeof(name) - 1) && \