libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 97dec411ebb29ff1ffb0f89e54be6c4d022db822
parent dd4f6ff9eae62310dab578f55e116a42abc787ea
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Mon, 22 May 2023 19:24:43 +0300

Detect sysctl() symbols in configure

Symbols could be enum values, not necessary macros

Diffstat:
Mconfigure.ac | 46+++++++++++++++++++++++++++++++++++++++++++---
Msrc/microhttpd/test_client_put_stop.c | 14++++++++++----
2 files changed, 53 insertions(+), 7 deletions(-)

diff --git a/configure.ac b/configure.ac @@ -2643,10 +2643,48 @@ MHD_CHECK_FUNC([[sysctl]], [[ #ifdef HAVE_SYS_SYSCTL_H #include <sys/sysctl.h> #endif -#ifdef HAVE_STDDEF_H +#if defined(HAVE_STDDEF_H) #include <stddef.h> +#elif defined(HAVE_STDLIB_H) +#include <stdlib.h> #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 <sys/types.h> +#endif /* HAVE_SYS_TYPES_H */ +#ifdef HAVE_SYS_SYSCTL_H +#include <sys/sysctl.h> +#endif /* HAVE_SYS_SYSCTL_H */ +#ifdef HAVE_SYS_SYSCTL_H +#include <sys/sysctl.h> +#endif /* HAVE_SYS_SYSCTL_H */ +#ifdef HAVE_SYS_SOCKET_H +#include <sys/socket.h> +#endif /* HAVE_SYS_SOCKET_H */ +#ifdef HAVE_NETINET_IN_SYSTM_H +#include <netinet/in_systm.h> +#endif /* HAVE_NETINET_IN_SYSTM_H */ +#ifdef HAVE_NETINET_IN_H +#include <netinet/in.h> +#endif /* HAVE_NETINET_IN_H */ +#ifdef HAVE_NETINET_IP_H +#include <netinet/ip.h> +#endif /* HAVE_NETINET_IP_H */ +#ifdef HAVE_NETINET_IP_ICMP_H +#include <netinet/ip_icmp.h> +#endif /* HAVE_NETINET_IP_ICMP_H */ +#ifdef HAVE_NETINET_ICMP_VAR_H +#include <netinet/icmp_var.h> +#endif /* HAVE_NETINET_ICMP_VAR_H */ + ]] + ) + ] ) MHD_CHECK_FUNC([[sysctlbyname]], [[ @@ -2656,8 +2694,10 @@ MHD_CHECK_FUNC([[sysctlbyname]], [[ #ifdef HAVE_SYS_SYSCTL_H #include <sys/sysctl.h> #endif -#ifdef HAVE_STDDEF_H +#if defined(HAVE_STDDEF_H) #include <stddef.h> +#elif defined(HAVE_STDLIB_H) +#include <stdlib.h> #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 @@ -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)) {