GNU libmicrohttpd  0.9.59
mhd_str.c File Reference

Functions implementations for string manipulating. More...

#include "mhd_str.h"
#include "mhd_limits.h"
Include dependency graph for mhd_str.c:

Go to the source code of this file.

Macros

#define isasciilower(c)   (((char)(c)) >= 'a' && ((char)(c)) <= 'z')
 
#define isasciiupper(c)   (((char)(c)) >= 'A' && ((char)(c)) <= 'Z')
 
#define isasciialpha(c)   (isasciilower(c) || isasciiupper(c))
 
#define isasciidigit(c)   (((char)(c)) >= '0' && ((char)(c)) <= '9')
 
#define isasciixdigit(c)
 
#define isasciialnum(c)   (isasciialpha(c) || isasciidigit(c))
 
#define toasciilower(c)   ((isasciiupper(c)) ? (((char)(c)) - 'A' + 'a') : ((char)(c)))
 
#define toasciiupper(c)   ((isasciilower(c)) ? (((char)(c)) - 'a' + 'A') : ((char)(c)))
 
#define todigitvalue(c)   (isasciidigit(c) ? (int)(((char)(c)) - '0') : (int)(-1))
 
#define toxdigitvalue(c)
 

Functions

int MHD_str_equal_caseless_ (const char *str1, const char *str2)
 
int MHD_str_equal_caseless_n_ (const char *const str1, const char *const str2, size_t maxlen)
 
bool MHD_str_has_token_caseless_ (const char *str, const char *const token, size_t token_len)
 
size_t MHD_str_to_uint64_ (const char *str, uint64_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_uint32_ (const char *str, uint32_t *out_val)
 
size_t MHD_strx_to_uint32_n_ (const char *str, size_t maxlen, uint32_t *out_val)
 
size_t MHD_strx_to_uint64_ (const char *str, uint64_t *out_val)
 
size_t MHD_strx_to_uint64_n_ (const char *str, size_t maxlen, uint64_t *out_val)
 

Detailed Description

Functions implementations for string manipulating.

Author
Karlson2k (Evgeny Grin)

Definition in file mhd_str.c.

Macro Definition Documentation

◆ isasciialnum

#define isasciialnum (   c)    (isasciialpha(c) || isasciidigit(c))

Check whether character is decimal digit or letter in US-ASCII

Parameters
ccharacter to check
Returns
boolean true if character is decimal digit or letter, boolean false otherwise

Definition at line 271 of file mhd_str.c.

◆ isasciialpha

#define isasciialpha (   c)    (isasciilower(c) || isasciiupper(c))

Checks whether character is letter in US-ASCII

Parameters
ccharacter to check
Returns
boolean true if character is letter, boolean false otherwise

Definition at line 239 of file mhd_str.c.

◆ isasciidigit

#define isasciidigit (   c)    (((char)(c)) >= '0' && ((char)(c)) <= '9')

Check whether character is decimal digit in US-ASCII

Parameters
ccharacter to check
Returns
boolean true if character is decimal digit, boolean false otherwise

Definition at line 249 of file mhd_str.c.

Referenced by MHD_str_to_uint64_(), and MHD_str_to_uint64_n_().

◆ isasciilower

#define isasciilower (   c)    (((char)(c)) >= 'a' && ((char)(c)) <= 'z')

Checks whether character is lower case letter in US-ASCII

Parameters
ccharacter to check
Returns
boolean true if character is lower case letter, boolean false otherwise

Definition at line 219 of file mhd_str.c.

◆ isasciiupper

#define isasciiupper (   c)    (((char)(c)) >= 'A' && ((char)(c)) <= 'Z')

Checks whether character is upper case letter in US-ASCII

Parameters
ccharacter to check
Returns
boolean true if character is upper case letter, boolean false otherwise

Definition at line 229 of file mhd_str.c.

◆ isasciixdigit

#define isasciixdigit (   c)
Value:
(isasciidigit((c)) || \
(((char)(c)) >= 'A' && ((char)(c)) <= 'F') || \
(((char)(c)) >= 'a' && ((char)(c)) <= 'f') )
#define isasciidigit(c)
Definition: mhd_str.c:249

Check whether character is hexadecimal digit in US-ASCII

Parameters
ccharacter to check
Returns
boolean true if character is hexadecimal digit, boolean false otherwise

Definition at line 259 of file mhd_str.c.

◆ toasciilower

#define toasciilower (   c)    ((isasciiupper(c)) ? (((char)(c)) - 'A' + 'a') : ((char)(c)))

Convert US-ASCII character to lower case. If character is upper case letter in US-ASCII than it's converted to lower case analog. If character is NOT upper case letter than it's returned unmodified.

Parameters
ccharacter to convert
Returns
converted to lower case character

Definition at line 283 of file mhd_str.c.

Referenced by MHD_str_equal_caseless_(), MHD_str_equal_caseless_n_(), and MHD_str_has_token_caseless_().

◆ toasciiupper

#define toasciiupper (   c)    ((isasciilower(c)) ? (((char)(c)) - 'a' + 'A') : ((char)(c)))

Convert US-ASCII character to upper case. If character is lower case letter in US-ASCII than it's converted to upper case analog. If character is NOT lower case letter than it's returned unmodified.

Parameters
ccharacter to convert
Returns
converted to upper case character

Definition at line 295 of file mhd_str.c.

◆ todigitvalue

#define todigitvalue (   c)    (isasciidigit(c) ? (int)(((char)(c)) - '0') : (int)(-1))

Convert US-ASCII decimal digit to its value.

Parameters
ccharacter to convert
Returns
value of hexadecimal digit or -1 if @ c is not hexadecimal digit

Definition at line 304 of file mhd_str.c.

◆ toxdigitvalue

#define toxdigitvalue (   c)
Value:
( isasciidigit(c) ? (int)(((char)(c)) - '0') : \
( (((char)(c)) >= 'A' && ((char)(c)) <= 'F') ? \
(int)(((unsigned char)(c)) - 'A' + 10) : \
( (((char)(c)) >= 'a' && ((char)(c)) <= 'f') ? \
(int)(((unsigned char)(c)) - 'a' + 10) : (int)(-1) )))
#define isasciidigit(c)
Definition: mhd_str.c:249

Convert US-ASCII hexadecimal digit to its value.

Parameters
ccharacter to convert
Returns
value of hexadecimal digit or -1 if @ c is not hexadecimal digit

Definition at line 312 of file mhd_str.c.

Referenced by MHD_strx_to_uint32_(), MHD_strx_to_uint32_n_(), MHD_strx_to_uint64_(), and MHD_strx_to_uint64_n_().

Function Documentation

◆ MHD_str_equal_caseless_()

int MHD_str_equal_caseless_ ( const char *  str1,
const char *  str2 
)

Check two string for equality, ignoring case of US-ASCII letters.

Parameters
str1first string to compare
str2second string to compare
Returns
non-zero if two strings are equal, zero otherwise.

Definition at line 329 of file mhd_str.c.

References toasciilower.

Referenced by build_header_response(), digest_calc_ha1(), keepalive_possible(), MHD_check_response_header_token_ci(), MHD_connection_handle_idle(), MHD_get_response_header(), MHD_lookup_connection_value(), MHD_lookup_header_token_ci(), MHD_queue_response(), need_100_continue(), and parse_connection_headers().

Here is the caller graph for this function:

◆ MHD_str_equal_caseless_n_()

int MHD_str_equal_caseless_n_ ( const char *const  str1,
const char *const  str2,
size_t  maxlen 
)

Check two string for equality, ignoring case of US-ASCII letters and checking not more than maxlen characters. Compares up to first terminating null character, but not more than first maxlen characters.

Parameters
str1first string to compare
str2second string to compare
maxlenmaximum number of characters to compare
Returns
non-zero if two strings are equal, zero otherwise.

Definition at line 359 of file mhd_str.c.

References toasciilower.

Referenced by lookup_sub_value(), MHD_create_post_processor(), MHD_post_process(), post_process_multipart(), process_multipart_headers(), and try_match_header().

Here is the caller graph for this function:

◆ MHD_str_has_token_caseless_()

bool MHD_str_has_token_caseless_ ( const char *  str,
const char *const  token,
size_t  token_len 
)

Check whether str has case-insensitive token. Token could be surrounded by spaces and tabs and delimited by comma. Match succeed if substring between start, end (of string) or comma contains only case-insensitive token and optional spaces and tabs.

Warning
token must not contain null-charters except optional terminating null-character.
Parameters
strthe string to check
tokenthe token to find
token_lenlength of token, not including optional terminating null-character.
Returns
non-zero if two strings are equal, zero otherwise.

Definition at line 393 of file mhd_str.c.

References toasciilower.

Referenced by MHD_check_response_header_token_ci(), and MHD_lookup_header_token_ci().

Here is the caller graph for this function:

◆ MHD_str_to_uint64_()

size_t MHD_str_to_uint64_ ( const char *  str,
uint64_t *  out_val 
)

Convert decimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character.

Parameters
strstring to convert
[out]out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Definition at line 450 of file mhd_str.c.

References isasciidigit, and UINT64_MAX.

Referenced by parse_connection_headers().

Here is the caller graph for this function:

◆ MHD_str_to_uint64_n_()

size_t MHD_str_to_uint64_n_ ( const char *  str,
size_t  maxlen,
uint64_t *  out_val 
)

Convert not more then maxlen decimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character or after maxlen digits.

Parameters
strstring to convert
maxlenmaximum number of characters to process
[out]out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Definition at line 492 of file mhd_str.c.

References isasciidigit, and UINT64_MAX.

◆ MHD_strx_to_uint32_()

size_t MHD_strx_to_uint32_ ( const char *  str,
uint32_t *  out_val 
)

Convert hexadecimal US-ASCII digits in string to number in uint32_t. Conversion stopped at first non-digit character.

Parameters
strstring to convert
[out]out_valpointer to uint32_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint32_t or out_val is NULL

Definition at line 535 of file mhd_str.c.

References toxdigitvalue, and UINT32_MAX.

◆ MHD_strx_to_uint32_n_()

size_t MHD_strx_to_uint32_n_ ( const char *  str,
size_t  maxlen,
uint32_t *  out_val 
)

Convert not more then maxlen hexadecimal US-ASCII digits in string to number in uint32_t. Conversion stopped at first non-digit character or after maxlen digits.

Parameters
strstring to convert
maxlenmaximum number of characters to process
[out]out_valpointer to uint32_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint32_t or out_val is NULL

Definition at line 581 of file mhd_str.c.

References toxdigitvalue, and UINT32_MAX.

Referenced by MHD_digest_auth_check(), and MHD_http_unescape().

Here is the caller graph for this function:

◆ MHD_strx_to_uint64_()

size_t MHD_strx_to_uint64_ ( const char *  str,
uint64_t *  out_val 
)

Convert hexadecimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character.

Parameters
strstring to convert
[out]out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Definition at line 621 of file mhd_str.c.

References toxdigitvalue, and UINT64_MAX.

◆ MHD_strx_to_uint64_n_()

size_t MHD_strx_to_uint64_n_ ( const char *  str,
size_t  maxlen,
uint64_t *  out_val 
)

Convert not more then maxlen hexadecimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character or after maxlen digits.

Parameters
strstring to convert
maxlenmaximum number of characters to process
[out]out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Definition at line 666 of file mhd_str.c.

References toxdigitvalue, and UINT64_MAX.

Referenced by MHD_digest_auth_check(), and process_request_body().

Here is the caller graph for this function: