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