From 97dec411ebb29ff1ffb0f89e54be6c4d022db822 Mon Sep 17 00:00:00 2001 From: "Evgeny Grin (Karlson2k)" Date: Mon, 22 May 2023 19:24:43 +0300 Subject: [PATCH] Detect sysctl() symbols in configure Symbols could be enum values, not necessary macros --- configure.ac | 46 +++++++++++++++++++++++++-- src/microhttpd/test_client_put_stop.c | 14 +++++--- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 6b4a0378..44ac85c3 100644 --- a/configure.ac +++ b/configure.ac @@ -2643,10 +2643,48 @@ MHD_CHECK_FUNC([[sysctl]], [[ #ifdef HAVE_SYS_SYSCTL_H #include #endif -#ifdef HAVE_STDDEF_H +#if defined(HAVE_STDDEF_H) #include +#elif defined(HAVE_STDLIB_H) +#include #endif - ]], [[int mib[2] = {CTL_KERN, KERN_MAXPROC}; i][f (sysctl(mib, 2, NULL, NULL, NULL, 0)) return 1;]] + ]], [[ + int mib[2] = {0, 0}; /* Avoid any platform-specific values */ + i][f (sysctl(mib, 2, NULL, NULL, NULL, 0)) return 1; + ]], + [ + AC_CHECK_DECLS([CTL_NET,PF_INET,IPPROTO_ICMP,ICMPCTL_ICMPLIM],[],[], + [[ +#ifdef HAVE_SYS_TYPES_H +#include +#endif /* HAVE_SYS_TYPES_H */ +#ifdef HAVE_SYS_SYSCTL_H +#include +#endif /* HAVE_SYS_SYSCTL_H */ +#ifdef HAVE_SYS_SYSCTL_H +#include +#endif /* HAVE_SYS_SYSCTL_H */ +#ifdef HAVE_SYS_SOCKET_H +#include +#endif /* HAVE_SYS_SOCKET_H */ +#ifdef HAVE_NETINET_IN_SYSTM_H +#include +#endif /* HAVE_NETINET_IN_SYSTM_H */ +#ifdef HAVE_NETINET_IN_H +#include +#endif /* HAVE_NETINET_IN_H */ +#ifdef HAVE_NETINET_IP_H +#include +#endif /* HAVE_NETINET_IP_H */ +#ifdef HAVE_NETINET_IP_ICMP_H +#include +#endif /* HAVE_NETINET_IP_ICMP_H */ +#ifdef HAVE_NETINET_ICMP_VAR_H +#include +#endif /* HAVE_NETINET_ICMP_VAR_H */ + ]] + ) + ] ) MHD_CHECK_FUNC([[sysctlbyname]], [[ @@ -2656,8 +2694,10 @@ MHD_CHECK_FUNC([[sysctlbyname]], [[ #ifdef HAVE_SYS_SYSCTL_H #include #endif -#ifdef HAVE_STDDEF_H +#if defined(HAVE_STDDEF_H) #include +#elif defined(HAVE_STDLIB_H) +#include #endif ]], [[sysctlbyname("test", NULL, NULL, NULL, 0);]] ) diff --git a/src/microhttpd/test_client_put_stop.c b/src/microhttpd/test_client_put_stop.c index cda8f1d1..3785599d 100644 --- a/src/microhttpd/test_client_put_stop.c +++ b/src/microhttpd/test_client_put_stop.c @@ -305,8 +305,12 @@ test_global_init (void) } } #endif -#if defined(HAVE_SYSCTL) && defined(CTL_NET) && defined(PF_INET) && \ - defined(IPPROTO_ICMP) && defined(ICMPCTL_ICMPLIM) +#if defined(HAVE_SYSCTL) && defined(HAVE_DECL_CTL_NET) && \ + defined(HAVE_DECL_PF_INET) && defined(HAVE_DECL_IPPROTO_ICMP) && \ + defined(HAVE_DECL_ICMPCTL_ICMPLIM) + /* Macros may have zero values */ +#if HAVE_DECL_CTL_NET && HAVE_DECL_PF_INET && HAVE_DECL_IPPROTO_ICMP && \ + HAVE_DECL_ICMPCTL_ICMPLIM if (1) { int mib[4]; @@ -366,8 +370,10 @@ test_global_init (void) #endif /* _MHD_HEAVY_TESTS */ } } -#endif /* HAVE_SYSCTL && CTL_NET && PF_INET && - IPPROTO_ICMP && ICMPCTL_ICMPLIM */ +#endif /* HAVE_DECL_CTL_NET && HAVE_DECL_PF_INET && HAVE_DECL_IPPROTO_ICMP && \ + HAVE_DECL_ICMPCTL_ICMPLIM */ +#endif /* HAVE_SYSCTL && HAVE_DECL_CTL_NET && HAVE_DECL_PF_INET && + HAVE_DECL_IPPROTO_ICMP && HAVE_DECL_ICMPCTL_ICMPLIM */ } if (MHD_YES != MHD_is_feature_supported (MHD_FEATURE_AUTOSUPPRESS_SIGPIPE)) {