rwrap: Fix symbol binding on Solaris.
authorAndreas Schneider <asn@samba.org>
Thu, 23 Oct 2014 05:46:53 +0000 (07:46 +0200)
committerMichael Adam <obnox@samba.org>
Thu, 23 Oct 2014 12:21:51 +0000 (14:21 +0200)
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
ConfigureChecks.cmake
config.h.cmake
src/resolv_wrapper.c

index 2633d23c2c0cab1c85d2eb1d8312f6a64dc3b404..6dbfc8894093d47cbc61958a028e8dbf4a10b3bb 100644 (file)
@@ -52,11 +52,14 @@ check_include_file(resolv.h HAVE_RESOLV_H)
 
 # FUNCTIONS
 find_library(RESOLV_LIRBRARY resolv)
-check_library_exists(${RESOLV_LIRBRARY} res_send "" RES_SEND_IN_LIBRESOLV)
-check_library_exists(${RESOLV_LIRBRARY} __res_send "" __RES_SEND_IN_LIBRESOLV)
-if (RESOLV_LIRBRARY AND RES_SEND_IN_LIBRESOLV OR __RES_SEND_IN_LIBRESOLV)
-    set(HAVE_LIBRESOLV TRUE)
-    set(CMAKE_REQUIRED_LIBRARIES ${RESOLV_LIRBRARY})
+
+if (RESOLV_LIRBRARY)
+    check_library_exists(${RESOLV_LIRBRARY} res_send "" RES_SEND_IN_LIBRESOLV)
+    check_library_exists(${RESOLV_LIRBRARY} __res_send "" __RES_SEND_IN_LIBRESOLV)
+    if (RES_SEND_IN_LIBRESOLV OR __RES_SEND_IN_LIBRESOLV)
+        set(HAVE_LIBRESOLV TRUE)
+        set(CMAKE_REQUIRED_LIBRARIES ${RESOLV_LIRBRARY})
+    endif()
 endif()
 
 check_function_exists(res_init HAVE_RES_INIT)
@@ -64,12 +67,18 @@ check_function_exists(__res_init HAVE___RES_INIT)
 
 check_function_exists(res_ninit HAVE_RES_NINIT)
 check_function_exists(__res_ninit HAVE___RES_NINIT)
+if (RESOLV_LIRBRARY)
+    check_library_exists(${RESOLV_LIRBRARY} res_ninit "" HAVE_RES_NINIT_IN_LIBRESOLV)
+endif()
 
 check_function_exists(res_close HAVE_RES_CLOSE)
 check_function_exists(__res_close HAVE___RES_CLOSE)
 
 check_function_exists(res_nclose HAVE_RES_NCLOSE)
 check_function_exists(__res_nclose HAVE___RES_NCLOSE)
+if (RESOLV_LIRBRARY)
+    check_library_exists(${RESOLV_LIRBRARY} res_nclose "" HAVE_RES_NCLOSE_IN_LIBRESOLV)
+endif()
 
 check_function_exists(res_query HAVE_RES_QUERY)
 check_function_exists(__res_query HAVE___RES_QUERY)
index 9d4dca001978eda369c4244ae83c12d968392924..aad83e3a57c40737f3551336b2a468010f5d3b9c 100644 (file)
 #cmakedefine HAVE___RES_INIT 1
 
 #cmakedefine HAVE_RES_NINIT 1
+#cmakedefine HAVE_RES_NINIT_IN_LIBRESOLV 1
 #cmakedefine HAVE___RES_NINIT 1
 
 #cmakedefine HAVE_RES_CLOSE 1
 #cmakedefine HAVE___RES_CLOSE 1
 
 #cmakedefine HAVE_RES_NCLOSE 1
+#cmakedefine HAVE_RES_NCLOSE_IN_LIBRESOLV 1
 #cmakedefine HAVE___RES_NCLOSE 1
 
 #cmakedefine HAVE_RES_QUERY 1
index dffba57615437e9263876163efe2237fcf3f40a6..8d0d67e4b1eb54c484ceb192d83efa792ef09d8a 100644 (file)
@@ -832,7 +832,12 @@ static int libc_res_init(void)
 static int libc_res_ninit(struct __res_state *state)
 {
 #if defined(HAVE_RES_NINIT)
+
+#if defined(HAVE_RES_NINIT_IN_LIBRESOLV)
+       rwrap_load_lib_function(RWRAP_LIBRESOLV, res_ninit);
+#else /* HAVE_RES_NINIT_IN_LIBRESOLV */
        rwrap_load_lib_function(RWRAP_LIBC, res_ninit);
+#endif /* HAVE_RES_NINIT_IN_LIBRESOLV */
 
        return rwrap.fns.libc_res_ninit(state);
 #elif defined(HAVE___RES_NINIT)
@@ -847,7 +852,12 @@ static int libc_res_ninit(struct __res_state *state)
 static void libc_res_nclose(struct __res_state *state)
 {
 #if defined(HAVE_RES_NCLOSE)
+
+#if defined(HAVE_RES_NCLOSE_IN_LIBRESOLV)
+       rwrap_load_lib_function(RWRAP_LIBRESOLV, res_nclose);
+#else /* HAVE_RES_NCLOSE_IN_LIBRESOLV */
        rwrap_load_lib_function(RWRAP_LIBC, res_nclose);
+#endif /* HAVE_RES_NCLOSE_IN_LIBRESOLV */
 
        rwrap.fns.libc_res_nclose(state);
 #elif defined(HAVE___RES_NCLOSE)