diff options
Diffstat (limited to 'test/inet')
-rw-r--r-- | test/inet/Makefile.in | 8 | ||||
-rw-r--r-- | test/inet/tst-res.c | 42 |
2 files changed, 49 insertions, 1 deletions
diff --git a/test/inet/Makefile.in b/test/inet/Makefile.in index 0710d3d71..2c84729bf 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 000000000..ad9de789e --- /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; +} + |