From d8f267afb5e7d036d0b23125e23b916336b19fa4 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Sun, 15 Oct 2017 09:15:27 -0500 Subject: resolv: new module --- Makefile | 1 + libgcompat/resolv.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 libgcompat/resolv.c diff --git a/Makefile b/Makefile index b740a6c..784babc 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,7 @@ LIBGCOMPAT_SRC = \ libgcompat/math.c \ libgcompat/pthread.c \ libgcompat/pwd.c \ + libgcompat/resolv.c \ libgcompat/resource.c \ libgcompat/setjmp.c \ libgcompat/stdio.c \ diff --git a/libgcompat/resolv.c b/libgcompat/resolv.c new file mode 100644 index 0000000..9ded8c9 --- /dev/null +++ b/libgcompat/resolv.c @@ -0,0 +1,32 @@ +/* Original author: Khem Raj */ +/*************************************************************************** + * resolv_compat.h + * + * Mimick GLIBC's res_ninit() and res_nclose() for musl libc + * Note: res_init() is actually deprecated according to + * http://docs.oracle.com/cd/E36784_01/html/E36875/res-nclose-3resolv.html + **************************************************************************/ +#include /* memcpy, memset */ +#include /* res_state */ + +static inline int res_ninit(res_state statp) +{ + int rc = res_init(); + if (statp != &_res) { + memcpy(statp, &_res, sizeof(*statp)); + } + return rc; +} + +static inline int res_nclose(res_state statp) +{ + if (!statp) + return -1; + if (statp != &_res) { + memset(statp, 0, sizeof(*statp)); + } + return 0; +} + +extern __typeof(res_ninit) __res_ninit __attribute__((weak, alias("res_ninit"))); +extern __typeof(res_nclose) __res_nclose __attribute__((weak, alias("res_nclose"))); -- cgit v1.2.3-70-g09d2