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@@ -36,6 +36,7 @@ 22 #include <arpa/inet.h> 23 #include <arpa/nameser.h> 24 #include <net/if.h> 25+#include <ctype.h> 26 27 #include "gresolv.h" 28 29@@ -878,8 +879,6 @@ GResolv *g_resolv_new(int index) 30 resolv->index = index; 31 resolv->nameserver_list = NULL; 32 33- res_ninit(&resolv->res); 34- 35 return resolv; 36 } 37 38@@ -919,8 +918,6 @@ void g_resolv_unref(GResolv *resolv) 39 40 flush_nameservers(resolv); 41 42- res_nclose(&resolv->res); 43- 44 g_free(resolv); 45 } 46 47@@ -1023,24 +1020,19 @@ guint g_resolv_lookup_hostname(GResolv *resolv, const char *hostname, 48 debug(resolv, "hostname %s", hostname); 49 50 if (!resolv->nameserver_list) { 51- int i; 52- 53- for (i = 0; i < resolv->res.nscount; i++) { 54- char buf[100]; 55- int family = resolv->res.nsaddr_list[i].sin_family; 56- void *sa_addr = &resolv->res.nsaddr_list[i].sin_addr; 57- 58- if (family != AF_INET && 59- resolv->res._u._ext.nsaddrs[i]) { 60- family = AF_INET6; 61- sa_addr = &resolv->res._u._ext.nsaddrs[i]->sin6_addr; 62+ FILE *f = fopen("/etc/resolv.conf", "r"); 63+ if (f) { 64+ char line[256], *s; 65+ int i; 66+ while (fgets(line, sizeof(line), f)) { 67+ if (strncmp(line, "nameserver", 10) || !isspace(line[10])) 68+ continue; 69+ for (s = &line[11]; isspace(s[0]); s++); 70+ for (i = 0; s[i] && !isspace(s[i]); i++); 71+ s[i] = 0; 72+ g_resolv_add_nameserver(resolv, s, 53, 0); 73 } 74- 75- if (family != AF_INET && family != AF_INET6) 76- continue; 77- 78- if (inet_ntop(family, sa_addr, buf, sizeof(buf))) 79- g_resolv_add_nameserver(resolv, buf, 53, 0); 80+ fclose(f); 81 } 82 83 if (!resolv->nameserver_list) 84