[git commit] inet: Fix LT{.old,} compilation due to res_iclose

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Wed Mar 20 10:08:49 UTC 2013


commit: http://git.uclibc.org/uClibc/commit/?id=044ac16085094d6ec00ea0739d7b92df18793109
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 libc/inet/resolv.c    |    2 +-
 test/.gitignore       |    5 +++--
 test/Test.mak         |    2 +-
 test/inet/Makefile.in |    8 +++++++-
 test/inet/tst-res.c   |   42 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 54 insertions(+), 5 deletions(-)

diff --git a/libc/inet/resolv.c b/libc/inet/resolv.c
index 769b65f..b557b09 100644
--- a/libc/inet/resolv.c
+++ b/libc/inet/resolv.c
@@ -3536,7 +3536,7 @@ __res_iclose(res_state statp)
 	struct __res_state * rp = statp;
 	__UCLIBC_MUTEX_LOCK(__resolv_lock);
 	if (rp == NULL)
-		rp = __resp;
+		rp = __res_state();
 	__close_nameservers();
 	__res_sync = NULL;
 #ifdef __UCLIBC_HAS_IPV6__
diff --git a/test/.gitignore b/test/.gitignore
index ec04628..85161da 100644
--- a/test/.gitignore
+++ b/test/.gitignore
@@ -40,6 +40,8 @@ dlopen/test[1-3]
 dlopen/testscope
 inet/bug-if1
 inet/gethost_r-align
+inet/gethostid
+inet/getnetent
 inet/if_nameindex
 inet/tst-aton
 inet/tst-ether_aton
@@ -47,9 +49,8 @@ inet/tst-ethers
 inet/tst-ethers-line
 inet/tst-network
 inet/tst-ntoa
+inet/tst-res
 inet/tst-sock-nonblock
-inet/gethostid
-inet/getnetent
 librt/shmtest
 locale/bug-iconv-trans
 locale/bug-usesetlocale
diff --git a/test/Test.mak b/test/Test.mak
index 76332fa..ee43a0f 100644
--- a/test/Test.mak
+++ b/test/Test.mak
@@ -109,7 +109,7 @@ $(G_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS)
 	$(Q)$(HOSTCC) $(filter-out $(HOST_CFLAGS-OMIT-$(patsubst %_glibc,%,$@)),$(HOST_CFLAGS)) \
 	$(CFLAGS_$(notdir $(CURDIR))) $(CFLAGS_$(patsubst %_glibc,%,$@)) \
 	-c $(patsubst %_glibc,%,$@).c -o $@.o
-	$(Q)$(HOSTCC) $(HOST_LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@))
+	$(Q)$(HOSTCC) $(HOST_LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@)) $(LDFLAGS_$@)
 
 
 shell_%:
diff --git a/test/inet/Makefile.in b/test/inet/Makefile.in
index 0710d3d..2c84729 100644
--- a/test/inet/Makefile.in
+++ b/test/inet/Makefile.in
@@ -7,5 +7,11 @@ TESTS_DISABLED := bug-if1 gethost_r-align gethostid if_nameindex tst-aton \
 endif
 
 ifeq ($(UCLIBC_HAS_SOCKET)$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6),)
-TESTS_DISABLED := tst-ether_aton tst-ethers tst-ethers-line
+TESTS_DISABLED += tst-ether_aton tst-ethers tst-ethers-line
+endif
+
+ifeq ($(UCLIBC_HAS_RESOLVER_SUPPORT),)
+TESTS_DISABLED += tst-res
+else
+LDFLAGS_tst-res_glibc := -lresolv # assume it's glibc or somebody with that lib
 endif
diff --git a/test/inet/tst-res.c b/test/inet/tst-res.c
new file mode 100644
index 0000000..ad9de78
--- /dev/null
+++ b/test/inet/tst-res.c
@@ -0,0 +1,42 @@
+#include <stdlib.h>
+#include <assert.h>
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+#include <netdb.h>
+
+int main(int argc, char **argv)
+{
+    int r;
+    struct __res_state state;
+
+    r = res_ninit(&state);
+    if (r) {
+        herror("ninit");
+		abort();
+	}
+    r = res_init();
+    if (r) {
+        herror("init");
+		abort();
+	}
+
+    res_close();
+#ifdef __UCLIBC__
+	/* assume there is at least one resolver configured */
+	assert (state._u._ext.nscount > 0);
+#else
+	assert (state._u._ext.nscount == 0);
+#endif
+	assert (state.options & RES_INIT);
+    res_nclose(&state);
+#ifdef __UCLIBC__
+	/* We wipe the whole thing */
+	assert ((state.options & RES_INIT) == 0);
+#endif
+	assert (state._u._ext.nscount == 0);
+
+    return 0;
+}
+


More information about the uClibc-cvs mailing list