libmicrohttpd

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

commit af75c70b42fb851ee605c40e1cd950f8c5bcf90d
parent 60cdf5f9e638e0831eda1feac857e8a940e155a6
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Wed, 27 Oct 2021 21:24:33 +0300

Further improved PAGESIZE macro detection

Diffstat:
Mconfigure.ac | 74++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Msrc/microhttpd/memorypool.c | 9++++++++-
2 files changed, 80 insertions(+), 3 deletions(-)

diff --git a/configure.ac b/configure.ac @@ -1393,7 +1393,42 @@ choke me now ] ) AS_VAR_IF([[mhd_cv_macro_pagesize_usable]], [["yes"]], - [AC_DEFINE([[MHD_USE_PAGESIZE_MACRO]],[[1]],[Define if you have usable PAGESIZE macro])], + [ + AC_DEFINE([[MHD_USE_PAGESIZE_MACRO]],[[1]],[Define if you have usable PAGESIZE macro]) + AC_CACHE_CHECK([whether PAGESIZE macro could be used for static init], [mhd_cv_macro_pagesize_usable_static], + [ + AC_LINK_IFELSE( + [ + AC_LANG_PROGRAM( + [[ +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifdef HAVE_LIMITS_H +#include <limits.h> +#endif +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> +#endif +#ifndef PAGESIZE +#error No PAGESIZE macro defined +choke me now +#endif +static long ac_pgsz = PAGESIZE + 0; + ]], + [[ + if (1 > ac_pgsz) return 1; + ]] + ) + ], + [[mhd_cv_macro_pagesize_usable_static="yes"]], [[mhd_cv_macro_pagesize_usable_static="no"]] + ) + ] + ) + AS_VAR_IF([[mhd_cv_macro_pagesize_usable_static]], [["yes"]], + [AC_DEFINE([[MHD_USE_PAGESIZE_MACRO_STATIC]],[[1]],[Define if you have PAGESIZE macro usable for static init])] + ) + ], [ AC_CACHE_CHECK([for usable PAGE_SIZE macro], [mhd_cv_macro_page_size_usable], [ @@ -1426,7 +1461,42 @@ choke me now ] ) AS_VAR_IF([[mhd_cv_macro_page_size_usable]], [["yes"]], - [AC_DEFINE([[MHD_USE_PAGE_SIZE_MACRO]],[[1]],[Define if you have usable PAGE_SIZE macro])] + [ + AC_DEFINE([[MHD_USE_PAGE_SIZE_MACRO]],[[1]],[Define if you have usable PAGE_SIZE macro]) + AC_CACHE_CHECK([whether PAGE_SIZE macro could be used for static init], [mhd_cv_macro_page_size_usable_static], + [ + AC_LINK_IFELSE( + [ + AC_LANG_PROGRAM( + [[ +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifdef HAVE_LIMITS_H +#include <limits.h> +#endif +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> +#endif +#ifndef PAGE_SIZE +#error No PAGE_SIZE macro defined +choke me now +#endif +static long ac_pgsz = PAGE_SIZE + 0; + ]], + [[ + if (1 > ac_pgsz) return 1; + ]] + ) + ], + [[mhd_cv_macro_page_size_usable_static="yes"]], [[mhd_cv_macro_page_size_usable_static="no"]] + ) + ] + ) + AS_VAR_IF([[mhd_cv_macro_page_size_usable_static]], [["yes"]], + [AC_DEFINE([[MHD_USE_PAGE_SIZE_MACRO_STATIC]],[[1]],[Define if you have PAGE_SIZE macro usable for static init])] + ) + ] ) ] ) diff --git a/src/microhttpd/memorypool.c b/src/microhttpd/memorypool.c @@ -120,7 +120,14 @@ /** * Size of memory page */ -static size_t MHD_sys_page_size_ = _MHD_FALLBACK_PAGE_SIZE; /* Default fallback value */ +static size_t MHD_sys_page_size_ = +#if defined(MHD_USE_PAGESIZE_MACRO_STATIC) + PAGESIZE; +#elif defined(MHD_USE_PAGE_SIZE_MACRO_STATIC) + PAGE_SIZE; +#else /* ! MHD_USE_PAGE_SIZE_MACRO_STATIC */ + _MHD_FALLBACK_PAGE_SIZE; /* Default fallback value */ +#endif /* ! MHD_USE_PAGE_SIZE_MACRO_STATIC */ /** * Initialise values for memory pools