1From 01974865e4d331eeaf25248bee1bb96539c450d9 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 6 Apr 2015 23:02:21 -0700
4Subject: [PATCH] resolve: musl does not implement res_ninit
5
6ported from
7http://git.alpinelinux.org/cgit/aports/plain/testing/connman/libresolv.patch
8
9Upstream-Status: Pending
10
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12
13---
14 gweb/gresolv.c | 34 +++++++++++++---------------------
15 1 file changed, 13 insertions(+), 21 deletions(-)
16
17diff --git a/gweb/gresolv.c b/gweb/gresolv.c
18index 954e7cf..2a9bc51 100644
19--- a/gweb/gresolv.c
20+++ b/gweb/gresolv.c
21@@ -878,8 +879,6 @@ GResolv *g_resolv_new(int index)
22 	resolv->index = index;
23 	resolv->nameserver_list = NULL;
24
25-	res_ninit(&resolv->res);
26-
27 	return resolv;
28 }
29
30@@ -919,8 +918,6 @@ void g_resolv_unref(GResolv *resolv)
31
32 	flush_nameservers(resolv);
33
34-	res_nclose(&resolv->res);
35-
36 	g_free(resolv);
37 }
38
39@@ -1023,24 +1020,19 @@ guint g_resolv_lookup_hostname(GResolv *resolv, const char *hostname,
40 	debug(resolv, "hostname %s", hostname);
41
42 	if (!resolv->nameserver_list) {
43-		int i;
44-
45-		for (i = 0; i < resolv->res.nscount; i++) {
46-			char buf[100];
47-			int family = resolv->res.nsaddr_list[i].sin_family;
48-			void *sa_addr = &resolv->res.nsaddr_list[i].sin_addr;
49-
50-			if (family != AF_INET &&
51-					resolv->res._u._ext.nsaddrs[i]) {
52-				family = AF_INET6;
53-				sa_addr = &resolv->res._u._ext.nsaddrs[i]->sin6_addr;
54+		FILE *f = fopen("/etc/resolv.conf", "r");
55+		if (f) {
56+			char line[256], *s;
57+			int i;
58+			while (fgets(line, sizeof(line), f)) {
59+				if (strncmp(line, "nameserver", 10) || !isspace(line[10]))
60+					continue;
61+				for (s = &line[11]; isspace(s[0]); s++);
62+				for (i = 0; s[i] && !isspace(s[i]); i++);
63+				s[i] = 0;
64+				g_resolv_add_nameserver(resolv, s, 53, 0);
65 			}
66-
67-			if (family != AF_INET && family != AF_INET6)
68-				continue;
69-
70-			if (inet_ntop(family, sa_addr, buf, sizeof(buf)))
71-				g_resolv_add_nameserver(resolv, buf, 53, 0);
72+			fclose(f);
73 		}
74
75 		if (!resolv->nameserver_list)
76