libmicrohttpd

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

mhd_limits.h (4319B)


      1 /*
      2   This file is part of libmicrohttpd
      3   Copyright (C) 2015-2022 Karlson2k (Evgeny Grin)
      4 
      5   This library is free software; you can redistribute it and/or
      6   modify it under the terms of the GNU Lesser General Public
      7   License as published by the Free Software Foundation; either
      8   version 2.1 of the License, or (at your option) any later version.
      9 
     10   This library is distributed in the hope that it will be useful,
     11   but WITHOUT ANY WARRANTY; without even the implied warranty of
     12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13   Lesser General Public License for more details.
     14 
     15   You should have received a copy of the GNU Lesser General Public
     16   License along with this library; if not, write to the Free Software
     17   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     18 */
     19 
     20 /**
     21  * @file microhttpd/mhd_limits.h
     22  * @brief  limits values definitions
     23  * @author Karlson2k (Evgeny Grin)
     24  */
     25 
     26 #ifndef MHD_LIMITS_H
     27 #define MHD_LIMITS_H
     28 
     29 #include "platform.h"
     30 
     31 #ifdef HAVE_LIMITS_H
     32 #include <limits.h>
     33 #endif /* HAVE_LIMITS_H */
     34 
     35 #define MHD_UNSIGNED_TYPE_MAX_(type) ((type) - 1)
     36 /* Assume 8 bits per byte, no padding bits. */
     37 #define MHD_SIGNED_TYPE_MAX_(type) \
     38   ( (type) ((( ((type) 1) << (sizeof(type) * 8 - 2)) - 1) * 2 + 1) )
     39 #define MHD_TYPE_IS_SIGNED_(type) (((type) 0)>((type) - 1))
     40 
     41 #ifndef INT_MAX
     42 #ifdef __INT_MAX__
     43 #define INT_MAX __INT_MAX__
     44 #else  /* ! __UINT_MAX__ */
     45 #define INT_MAX MHD_SIGNED_TYPE_MAX_ (int)
     46 #endif /* ! __UINT_MAX__ */
     47 #endif /* !UINT_MAX */
     48 
     49 #ifndef UINT_MAX
     50 #ifdef __UINT_MAX__
     51 #define UINT_MAX __UINT_MAX__
     52 #else  /* ! __UINT_MAX__ */
     53 #define UINT_MAX MHD_UNSIGNED_TYPE_MAX_ (unsigned int)
     54 #endif /* ! __UINT_MAX__ */
     55 #endif /* !UINT_MAX */
     56 
     57 #ifndef LONG_MAX
     58 #ifdef __LONG_MAX__
     59 #define LONG_MAX __LONG_MAX__
     60 #else  /* ! __LONG_MAX__ */
     61 #define LONG_MAX MHD_SIGNED_TYPE_MAX (long)
     62 #endif /* ! __LONG_MAX__ */
     63 #endif /* !LONG_MAX */
     64 
     65 #ifndef ULLONG_MAX
     66 #ifdef ULONGLONG_MAX
     67 #define ULLONG_MAX ULONGLONG_MAX
     68 #else  /* ! ULONGLONG_MAX */
     69 #define ULLONG_MAX MHD_UNSIGNED_TYPE_MAX_ (MHD_UNSIGNED_LONG_LONG)
     70 #endif /* ! ULONGLONG_MAX */
     71 #endif /* !ULLONG_MAX */
     72 
     73 #ifndef INT32_MAX
     74 #ifdef __INT32_MAX__
     75 #define INT32_MAX __INT32_MAX__
     76 #else  /* ! __INT32_MAX__ */
     77 #define INT32_MAX ((int32_t) 0x7FFFFFFF)
     78 #endif /* ! __INT32_MAX__ */
     79 #endif /* !INT32_MAX */
     80 
     81 #ifndef UINT32_MAX
     82 #ifdef __UINT32_MAX__
     83 #define UINT32_MAX __UINT32_MAX__
     84 #else  /* ! __UINT32_MAX__ */
     85 #define UINT32_MAX ((int32_t) 0xFFFFFFFF)
     86 #endif /* ! __UINT32_MAX__ */
     87 #endif /* !UINT32_MAX */
     88 
     89 #ifndef UINT64_MAX
     90 #ifdef __UINT64_MAX__
     91 #define UINT64_MAX __UINT64_MAX__
     92 #else  /* ! __UINT64_MAX__ */
     93 #define UINT64_MAX ((uint64_t) 0xFFFFFFFFFFFFFFFF)
     94 #endif /* ! __UINT64_MAX__ */
     95 #endif /* !UINT64_MAX */
     96 
     97 #ifndef INT64_MAX
     98 #ifdef __INT64_MAX__
     99 #define INT64_MAX __INT64_MAX__
    100 #else  /* ! __INT64_MAX__ */
    101 #define INT64_MAX ((int64_t) 0x7FFFFFFFFFFFFFFF)
    102 #endif /* ! __UINT64_MAX__ */
    103 #endif /* !INT64_MAX */
    104 
    105 #ifndef SIZE_MAX
    106 #ifdef __SIZE_MAX__
    107 #define SIZE_MAX __SIZE_MAX__
    108 #elif defined(UINTPTR_MAX)
    109 #define SIZE_MAX UINTPTR_MAX
    110 #else  /* ! __SIZE_MAX__ */
    111 #define SIZE_MAX MHD_UNSIGNED_TYPE_MAX_ (size_t)
    112 #endif /* ! __SIZE_MAX__ */
    113 #endif /* !SIZE_MAX */
    114 
    115 #ifndef SSIZE_MAX
    116 #ifdef __SSIZE_MAX__
    117 #define SSIZE_MAX __SSIZE_MAX__
    118 #elif defined(INTPTR_MAX)
    119 #define SSIZE_MAX INTPTR_MAX
    120 #else
    121 #define SSIZE_MAX MHD_SIGNED_TYPE_MAX_ (ssize_t)
    122 #endif
    123 #endif /* ! SSIZE_MAX */
    124 
    125 #ifndef OFF_T_MAX
    126 #ifdef OFF_MAX
    127 #define OFF_T_MAX OFF_MAX
    128 #elif defined(OFFT_MAX)
    129 #define OFF_T_MAX OFFT_MAX
    130 #elif defined(__APPLE__) && defined(__MACH__)
    131 #define OFF_T_MAX INT64_MAX
    132 #else
    133 #define OFF_T_MAX MHD_SIGNED_TYPE_MAX_ (off_t)
    134 #endif
    135 #endif /* !OFF_T_MAX */
    136 
    137 #if defined(_LARGEFILE64_SOURCE) && ! defined(OFF64_T_MAX)
    138 #define OFF64_T_MAX MHD_SIGNED_TYPE_MAX_ (uint64_t)
    139 #endif /* _LARGEFILE64_SOURCE && !OFF64_T_MAX */
    140 
    141 #ifndef TIME_T_MAX
    142 #define TIME_T_MAX ((time_t)              \
    143                     (MHD_TYPE_IS_SIGNED_ (time_t) ?    \
    144                      MHD_SIGNED_TYPE_MAX_ (time_t) : \
    145                      MHD_UNSIGNED_TYPE_MAX_ (time_t)))
    146 #endif /* !TIME_T_MAX */
    147 
    148 #ifndef TIMEVAL_TV_SEC_MAX
    149 #ifndef _WIN32
    150 #define TIMEVAL_TV_SEC_MAX TIME_T_MAX
    151 #else  /* _WIN32 */
    152 #define TIMEVAL_TV_SEC_MAX LONG_MAX
    153 #endif /* _WIN32 */
    154 #endif /* !TIMEVAL_TV_SEC_MAX */
    155 
    156 #endif /* MHD_LIMITS_H */