rwrap: Add support for res_nclose().
authorAndreas Schneider <asn@samba.org>
Mon, 1 Sep 2014 15:23:13 +0000 (17:23 +0200)
committerMichael Adam <obnox@samba.org>
Tue, 21 Oct 2014 11:39:24 +0000 (13:39 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
src/resolv_wrapper.c

index fe55c4a..b1ee978 100644 (file)
@@ -128,6 +128,10 @@ struct rwrap_libc_fns {
        int (*libc___res_init)(void);
        int (*libc_res_ninit)(struct __res_state *state);
        int (*libc___res_ninit)(struct __res_state *state);
+       void (*libc_res_nclose)(struct __res_state *state);
+       void (*libc___res_nclose)(struct __res_state *state);
+       void (*libc_res_close)(void);
+       void (*libc___res_close)(void);
 };
 
 struct rwrap {
@@ -298,6 +302,22 @@ static int libc_res_ninit(struct __res_state *state)
 #endif
 }
 
+static void libc_res_nclose(struct __res_state *state)
+{
+#if defined(HAVE_RES_NCLOSE)
+       rwrap_load_lib_function(RWRAP_LIBC, res_nclose);
+
+       rwrap.fns.libc_res_nclose(state);
+#elif defined(HAVE___RES_NCLOSE)
+       rwrap_load_lib_function(RWRAP_LIBC, __res_nclose);
+
+       rwrap.fns.libc___res_nclose(state);
+#else
+#error "No res_nclose function"
+#endif
+}
+
+
 /****************************************************************************
  *   RES_NINIT
  ***************************************************************************/
@@ -371,3 +391,39 @@ int __res_init(void)
 {
        return rwrap_res_init();
 }
+
+/****************************************************************************
+ *   RES_NCLOSE
+ ***************************************************************************/
+
+static void rwrap_res_nclose(struct __res_state *state)
+{
+       libc_res_nclose(state);
+}
+
+#if defined(HAVE_RES_NCLOSE)
+void res_nclose(struct __res_state *state)
+#elif defined(HAVE___RES_NCLOSE)
+void __res_nclose(struct __res_state *state)
+#endif
+{
+       libc_res_nclose(state);
+}
+
+/****************************************************************************
+ *   RES_CLOSE
+ ***************************************************************************/
+
+static void rwrap_res_close(void)
+{
+       rwrap_res_nclose(&rwrap_res_state);
+}
+
+#if defined(HAVE_RES_CLOSE)
+void res_close(void)
+#elif defined(HAVE___RES_CLOSE)
+void __res_close(void)
+#endif
+{
+       rwrap_res_close();
+}