OSDN Git Service

inet: Fix LT{.old,} compilation due to res_iclose
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Sun, 17 Mar 2013 06:19:23 +0000 (07:19 +0100)
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Wed, 20 Mar 2013 10:08:49 +0000 (11:08 +0100)
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
libc/inet/resolv.c
test/.gitignore
test/Test.mak
test/inet/Makefile.in
test/inet/tst-res.c [new file with mode: 0644]

index 769b65f..b557b09 100644 (file)
@@ -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__
index ec04628..85161da 100644 (file)
@@ -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
index 76332fa..ee43a0f 100644 (file)
@@ -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_%:
index 0710d3d..2c84729 100644 (file)
@@ -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 (file)
index 0000000..ad9de78
--- /dev/null
@@ -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;
+}
+