37#ifdef MHD_FAVOR_SMALL_CODE
38#ifdef _MHD_static_inline
39#undef _MHD_static_inline
44#define _MHD_static_inline static
67 return (
c >=
'a') && (
c <=
'z');
83 return (
c >=
'A') && (
c <=
'Z');
113 return (
c >=
'0') && (
c <=
'9');
128 ( (
c >=
'A') && (
c <=
'F') ) ||
129 ( (
c >=
'a') && (
c <=
'f') );
185#if defined(MHD_FAVOR_SMALL_CODE)
196 return (
unsigned char) (
c -
'0');
214#if ! defined(MHD_FAVOR_SMALL_CODE)
215 switch ((
unsigned char)
c)
517 return (
unsigned char) (
c -
'0');
518 if ( (
c >=
'A') && (
c <=
'F') )
519 return (
unsigned char) (
c -
'A' + 10);
520 if ( (
c >=
'a') && (
c <=
'f') )
521 return (
unsigned char) (
c -
'a' + 10);
538 return ( (
c1 ==
c2) ||
540 ((
c1 -
'A' +
'a') ==
c2) :
555#define isasciilower(c) (((char) (c)) >= 'a' && ((char) (c)) <= 'z')
565#define isasciiupper(c) (((char) (c)) >= 'A' && ((char) (c)) <= 'Z')
575#define isasciialpha(c) (isasciilower (c) || isasciiupper (c))
585#define isasciidigit(c) (((char) (c)) >= '0' && ((char) (c)) <= '9')
595#define isasciixdigit(c) (isasciidigit ((c)) || \
596 (((char) (c)) >= 'A' && ((char) (c)) <= 'F') || \
597 (((char) (c)) >= 'a' && ((char) (c)) <= 'f') )
607#define isasciialnum(c) (isasciialpha (c) || isasciidigit (c))
619#define toasciilower(c) ((isasciiupper (c)) ? (((char) (c)) - 'A' + 'a') : \
632#define toasciiupper(c) ((isasciilower (c)) ? (((char) (c)) - 'a' + 'A') : \
642#define todigitvalue(c) (isasciidigit (c) ? (int) (((char) (c)) - '0') : \
651#define toxdigitvalue(c) (isasciidigit (c) ? (int) (((char) (c)) - '0') : \
652 ( (((char) (c)) >= 'A' && ((char) (c)) <= 'F') ? \
653 (int) (((unsigned char) (c)) - 'A' + 10) : \
654 ( (((char) (c)) >= 'a' && ((char) (c)) <= 'f') ? \
655 (int) (((unsigned char) (c)) - 'a' + 10) : \
665#define charsequalcaseless(c1, c2) \
666 ( ((c1) == (c2)) || \
667 (isasciiupper (c1) ? \
668 (((c1) - 'A' + 'a') == (c2)) : \
669 (((c1) == ((c2) - 'A' + 'a')) && isasciiupper (c2))) )
674#ifndef MHD_FAVOR_SMALL_CODE
718 const char *
const str2,
750 const char *
const str2,
755 for (
i = 0;
i < len; ++
i)
783 const char *
const token,
793 while (
' ' == *str ||
'\t' == *str ||
',' == *str)
800 const char sc = *(str++);
811 while (
' ' == *str ||
'\t' == *str)
814 if ((0 == *str) || (
',' == *str) )
821 while (0 != *str &&
',' != *str)
859 const char *
const token,
891 while ( ((
size_t) (
s1 - str) <
str_len) &&
892 ((
' ' == *
s1) || (
'\t' == *
s1) || (
',' == *
s1)) )
918 while ( ((
size_t) (
s1 - str) <
str_len) &&
919 ((
' ' == *
s1) || (
'\t' == *
s1)) )
924 if (((
size_t) (
s1 - str) ==
str_len) || (
',' == *
s1))
964 while ( ((
size_t) (
s1 - str) <
str_len) && (
',' != *
s1))
970 while ( ((
size_t) (
s1 - str) <
str_len) &&
971 (
',' != *
s1) && (
' ' != *
s1) && (
'\t' != *
s1) )
984 while ( ((
size_t) (
s1 - str) <
str_len) &&
985 ((
' ' == *
s1) || (
'\t' == *
s1)) )
991 if (((
size_t) (
s1 - str) <
str_len) && (
',' != *
s1))
1035 const char *
const tokens,
1054 ((
' ' ==
t[
pt]) || (
'\t' ==
t[
pt]) || (
',' ==
t[
pt])) )
1068 (
' ' !=
t[
pt] &&
'\t' !=
t[
pt] &&
',' !=
t[
pt]));
1170 mhd_assert ((
' ' != str[0]) && (
'\t' != str[0]));
1182#ifndef MHD_FAVOR_SMALL_CODE
1199 const char *
const start = str;
1208 const int digit = (
unsigned char) (*str) -
'0';
1220 return (
size_t) (str - start);
1252 const int digit = (
unsigned char) str[
i] -
'0';
1284 const char *
const start = str;
1308 if (str - start > 0)
1310 return (
size_t) (str - start);
1372 const char *
const start = str;
1395 if (str - start > 0)
1397 return (
size_t) (str - start);
1548#ifndef MHD_FAVOR_SMALL_CODE
1577 return (
size_t) (
chr -
buf);
1618 return (
size_t) (
chr -
buf);
1682 for (
i = 0;
i < size; ++
i)
1687 hex[
i * 2] = (
char) ((
j < 10) ? (
j +
'0') : (
j - 10 +
'a'));
1689 hex[
i * 2 + 1] = (
char) ((
j < 10) ? (
j +
'0') : (
j - 10 +
'a'));
1734 if ((0 >
h) || (0 >
l))
1737 | ((
uint8_t) ((
unsigned int)
l)) );
1751#ifdef MHD_FAVOR_SMALL_CODE
1780 if ((0 >
h) || (0 >
l))
1810 if ((0 >
h) || (0 >
l))
1841#ifndef MHD_FAVOR_SMALL_CODE
1860 if ((0 >
h) || (0 >
l))
1901 if ((0 >
h) || (0 >
l))
1930#ifdef MHD_FAVOR_SMALL_CODE
1949 const char chr = str[
r++];
1952 const char d1 = str[
r++];
1957 const char d2 = str[
r++];
1965 if ((0 >
h) || (0 >
l))
1987#ifdef MHD_FAVOR_SMALL_CODE
2005 const char chr = str[
r++];
2008 const char d1 = str[
r++];
2019 const char d2 = str[
r++];
2034 if ((0 >
h) || (0 >
l))
2147#if defined(DAUTH_SUPPORT) || defined(BAUTH_SUPPORT)
2161#ifndef MHD_FAVOR_SMALL_CODE
2168 if ((
'\\' ==
chr) || (
'\"' ==
chr))
2189 if ((
'\\' ==
chr) || (
'\"' ==
chr))
2216#ifndef MHD_BASE64_FUNC_VERSION
2217#ifdef MHD_FAVOR_SMALL_CODE
2218#define MHD_BASE64_FUNC_VERSION 1
2220#define MHD_BASE64_FUNC_VERSION 3
2224#if MHD_BASE64_FUNC_VERSION < 1 || MHD_BASE64_FUNC_VERSION > 3
2225#error Wrong MHD_BASE64_FUNC_VERSION value
2228#if MHD_BASE64_FUNC_VERSION == 3
2229#define MHD_base64_map_type_ int
2231#define MHD_base64_map_type_ int8_t
2234#if MHD_BASE64_FUNC_VERSION == 1
2256 if ((
'z' >=
c) && (
'a' <=
c))
2274#if MHD_BASE64_FUNC_VERSION >= 2
2279 -1, -1, -1, -1, -1, -1, -1, -1,
2283 -1, -1, -1, -1, -1, -1, -1, -1,
2287 -1, -1, -1, -1, -1, -1, -1, -1,
2291 -1, -1, -1, -1, -1, -1, -1, -1,
2295 -1, -1, -1, -1, -1, -1, -1, -1,
2299 -1, -1, -1, 62, -1, -1, -1, 63,
2303 52, 53, 54, 55, 56, 57, 58, 59,
2307 60, 61, -1, -1, -1, -2, -1, -1,
2311 -1, 0, 1, 2, 3, 4, 5, 6,
2315 7, 8, 9, 10, 11, 12, 13, 14,
2319 15, 16, 17, 18, 19, 20, 21, 22,
2323 23, 24, 25, -1, -1, -1, -1, -1,
2327 -1, 26, 27, 28, 29, 30, 31, 32,
2331 33, 34, 35, 36, 37, 38, 39, 40,
2335 41, 42, 43, 44, 45, 46, 47, 48,
2339 49, 50, 51, -1, -1, -1, -1, -1
2341#if MHD_BASE64_FUNC_VERSION == 3
2343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2344 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2346 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2347 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2348 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2350 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2353#define base64_char_to_value_(c) map[(c)]
2369#if MHD_BASE64_FUNC_VERSION == 2
2370 if (0 != (0x80 & (
in[
i] |
in[
i + 1] |
in[
i + 2] |
in[
i + 3])))
2379 if ((0 >
v1) || (0 >
v2) || (0 >
v3) || (0 >
v4))
2390#if MHD_BASE64_FUNC_VERSION == 2
2391 if (0 != (0x80 & (
in[
i] |
in[
i + 1] |
in[
i + 2] |
in[
i + 3])))
2400 if ((0 >
v1) || (0 >
v2))
2407 if ((-2 !=
v3) || (-2 !=
v4))
2431#if MHD_BASE64_FUNC_VERSION >= 2
2432#undef base64_char_to_value_
2440#undef MHD_base64_map_type_
int MHD_str_equal_caseless_(const char *str1, const char *str2)
size_t MHD_strx_to_uint32_(const char *str, uint32_t *out_val)
size_t MHD_str_to_uint64_n_(const char *str, size_t maxlen, uint64_t *out_val)
size_t MHD_strx_to_uint64_n_(const char *str, size_t maxlen, uint64_t *out_val)
int MHD_str_equal_caseless_n_(const char *const str1, const char *const str2, size_t maxlen)
size_t MHD_str_to_uint64_(const char *str, uint64_t *out_val)
bool MHD_str_has_token_caseless_(const char *str, const char *const token, size_t token_len)
size_t MHD_strx_to_uint64_(const char *str, uint64_t *out_val)
size_t MHD_strx_to_uint32_n_(const char *str, size_t maxlen, uint32_t *out_val)
#define MHD_DATA_TRUNCATION_RUNTIME_CHECK_DISABLE_
#define MHD_DATA_TRUNCATION_RUNTIME_CHECK_RESTORE_
limits values definitions
size_t MHD_bin_to_hex(const void *bin, size_t size, char *hex)
size_t MHD_str_pct_decode_strict_n_(const char *pct_encoded, size_t pct_encoded_len, char *decoded, size_t buf_size)
size_t MHD_bin_to_hex_z(const void *bin, size_t size, char *hex)
size_t MHD_uint8_to_str_pad(uint8_t val, uint8_t min_digits, char *buf, size_t buf_size)
bool MHD_str_remove_tokens_caseless_(char *str, size_t *str_len, const char *const tokens, const size_t tokens_len)
size_t MHD_str_pct_decode_lenient_n_(const char *pct_encoded, size_t pct_encoded_len, char *decoded, size_t buf_size, bool *broken_encoding)
size_t MHD_uint16_to_str(uint16_t val, char *buf, size_t buf_size)
size_t MHD_str_pct_decode_in_place_lenient_(char *str, bool *broken_encoding)
size_t MHD_uint64_to_str(uint64_t val, char *buf, size_t buf_size)
size_t MHD_str_pct_decode_in_place_strict_(char *str)
#define charsequalcaseless(c1, c2)
bool MHD_str_remove_token_caseless_(const char *str, size_t str_len, const char *const token, const size_t token_len, char *buf, ssize_t *buf_size)
bool MHD_str_equal_caseless_bin_n_(const char *const str1, const char *const str2, size_t len)
size_t MHD_uint32_to_strx(uint32_t val, char *buf, size_t buf_size)
size_t MHD_hex_to_bin(const char *hex, size_t len, void *bin)
Header for string manipulating helpers.