From 7712fcd17847998cf1ee3071284ec50c5b3c1978 Mon Sep 17 00:00:00 2001 From: Felix Yan Date: Wed, 18 Aug 2021 01:32:44 +0800 Subject: [PATCH] Provide ares_nameser.h as a public interface (#417) NodeJS needs ares_nameser.h as a pubic header. Fixes: #415 Fix By: Felix Yan (@felixonmars) [Retrieved from: https://github.com/c-ares/c-ares/commit/7712fcd17847998cf1ee3071284ec50c5b3c1978] Signed-off-by: Fabrice Fontaine --- CMakeLists.txt | 6 ++++++ configure.ac | 14 ++++++++++++++ include/CMakeLists.txt | 2 +- include/Makefile.am | 2 +- include/ares_build.h.cmake | 2 ++ include/ares_build.h.in | 3 +++ {src/lib => include}/ares_nameser.h | 10 ++++++---- src/lib/Makefile.inc | 1 - 8 files changed, 33 insertions(+), 7 deletions(-) rename {src/lib => include}/ares_nameser.h (98%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f42d145..28f8e01a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -557,6 +557,12 @@ ENDIF() IF (HAVE_WINDOWS_H) SET (CARES_HAVE_WINDOWS_H 1) ENDIF() +IF (HAVE_ARPA_NAMESER_H) + SET (CARES_HAVE_ARPA_NAMESER_H 1) +ENDIF() +IF (HAVE_ARPA_NAMESER_COMPAT_H) + SET (CARES_HAVE_ARPA_NAMESER_COMPAT_H 1) +ENDIF() # Record toplevel CMakeLists.txt path set(CARES_TOPLEVEL_DIR "${CMAKE_CURRENT_SOURCE_DIR}") diff --git a/configure.ac b/configure.ac index c21b8ff3..1ba8a8ec 100644 --- a/configure.ac +++ b/configure.ac @@ -547,6 +547,20 @@ dnl *Sigh* these are needed in order for net/if.h to get properly detected. ] ) +dnl Test and set CARES_HAVE_ARPA_NAMESER_H / CARES_HAVE_ARPA_NAMESER_COMPAT_H +AC_CHECK_DECL([HAVE_ARPA_NAMESER_H], +[ +CARES_DEFINE_UNQUOTED([CARES_HAVE_ARPA_NAMESER_H]) +], +[] +) +AC_CHECK_DECL([HAVE_ARPA_NAMESER_COMPAT_H], +[ +CARES_DEFINE_UNQUOTED([CARES_HAVE_ARPA_NAMESER_COMPAT_H]) +], +[] +) + dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index 439e7bb2..3321956d 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -3,6 +3,6 @@ CONFIGURE_FILE (ares_build.h.cmake ${PROJECT_BINARY_DIR}/ares_build.h) # Headers installation target IF (CARES_INSTALL) - SET (CARES_HEADERS ares.h ares_version.h "${PROJECT_BINARY_DIR}/ares_build.h" ares_rules.h ares_dns.h) + SET (CARES_HEADERS ares.h ares_version.h "${PROJECT_BINARY_DIR}/ares_build.h" ares_rules.h ares_dns.h ares_nameser.h) INSTALL (FILES ${CARES_HEADERS} COMPONENT Devel DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) ENDIF () diff --git a/include/Makefile.am b/include/Makefile.am index 125a686a..d208bece 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -2,6 +2,6 @@ AUTOMAKE_OPTIONS = foreign nostdinc 1.9.6 ACLOCAL_AMFLAGS = -I m4 --install # what headers to install on 'make install': -include_HEADERS = ares.h ares_version.h ares_build.h ares_rules.h ares_dns.h +include_HEADERS = ares.h ares_version.h ares_build.h ares_rules.h ares_dns.h ares_nameser.h EXTRA_DIST = ares_build.h.cmake ares_build.h.in ares_build.h.dist CMakeLists.txt diff --git a/include/ares_build.h.cmake b/include/ares_build.h.cmake index ac32d47f..e847f17e 100644 --- a/include/ares_build.h.cmake +++ b/include/ares_build.h.cmake @@ -13,6 +13,8 @@ #cmakedefine CARES_HAVE_WS2TCPIP_H #cmakedefine CARES_HAVE_WINSOCK2_H #cmakedefine CARES_HAVE_WINDOWS_H +#cmakedefine CARES_HAVE_ARPA_NAMESER_H +#cmakedefine CARES_HAVE_ARPA_NAMESER_COMPAT_H #ifdef CARES_HAVE_SYS_TYPES_H # include diff --git a/include/ares_build.h.in b/include/ares_build.h.in index 24e3a989..20fd28a0 100644 --- a/include/ares_build.h.in +++ b/include/ares_build.h.in @@ -55,6 +55,9 @@ Error Compilation_aborted_CARES_TYPEOF_ARES_SOCKLEN_T_already_defined #endif +#undef CARES_HAVE_ARPA_NAMESER_H +#undef CARES_HAVE_ARPA_NAMESER_COMPAT_H + /* ================================================================ */ /* EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY */ /* ================================================================ */ diff --git a/src/lib/ares_nameser.h b/include/ares_nameser.h similarity index 98% rename from src/lib/ares_nameser.h rename to include/ares_nameser.h index 65aebcc1..18a9e5ac 100644 --- a/src/lib/ares_nameser.h +++ b/include/ares_nameser.h @@ -2,10 +2,12 @@ #ifndef ARES_NAMESER_H #define ARES_NAMESER_H -#ifdef HAVE_ARPA_NAMESER_H +#include "ares_build.h" + +#ifdef CARES_HAVE_ARPA_NAMESER_H # include #endif -#ifdef HAVE_ARPA_NAMESER_COMPAT_H +#ifdef CARES_HAVE_ARPA_NAMESER_COMPAT_H # include #endif @@ -68,7 +70,7 @@ * provide them * ============================================================================ */ -#ifndef HAVE_ARPA_NAMESER_H +#ifndef CARES_HAVE_ARPA_NAMESER_H typedef enum __ns_class { ns_c_invalid = 0, /* Cookie. */ @@ -173,7 +175,7 @@ typedef enum __ns_rcode { ns_r_badtime = 18 } ns_rcode; -#endif /* HAVE_ARPA_NAMESER_H */ +#endif /* CARES_HAVE_ARPA_NAMESER_H */ /* ============================================================================ diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc index 7426c3de..47bc8cdd 100644 --- a/src/lib/Makefile.inc +++ b/src/lib/Makefile.inc @@ -73,7 +73,6 @@ HHEADERS = ares_android.h \ ares_strsplit.h \ ares_writev.h \ bitncmp.h \ - ares_nameser.h \ ares_setup.h \ setup_once.h