GNU libmicrohttpd 0.9.77
|
Functions implementations for string manipulating. More...
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) |
#define | toasciiupper(c) |
#define | todigitvalue(c) |
#define | toxdigitvalue(c) |
#define | charsequalcaseless(c1, c2) |
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_equal_caseless_bin_n_ (const char *const str1, const char *const str2, size_t len) |
bool | MHD_str_has_token_caseless_ (const char *str, const char *const token, size_t token_len) |
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_remove_tokens_caseless_ (char *str, size_t *str_len, const char *const tokens, const size_t tokens_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) |
size_t | MHD_uint32_to_strx (uint32_t val, char *buf, size_t buf_size) |
size_t | MHD_uint16_to_str (uint16_t val, char *buf, size_t buf_size) |
size_t | MHD_uint64_to_str (uint64_t val, char *buf, size_t buf_size) |
size_t | MHD_uint8_to_str_pad (uint8_t val, uint8_t min_digits, char *buf, size_t buf_size) |
Functions implementations for string manipulating.
Definition in file mhd_str.c.
#define charsequalcaseless | ( | c1, | |
c2 | |||
) |
Caseless compare two characters.
c1 | the first char to compare |
c1 | the second char to compare |
#define isasciialnum | ( | c | ) | (isasciialpha (c) || isasciidigit (c)) |
#define isasciialpha | ( | c | ) | (isasciilower (c) || isasciiupper (c)) |
#define isasciidigit | ( | c | ) | (((char) (c)) >= '0' && ((char) (c)) <= '9') |
#define isasciilower | ( | c | ) | (((char) (c)) >= 'a' && ((char) (c)) <= 'z') |
#define isasciiupper | ( | c | ) | (((char) (c)) >= 'A' && ((char) (c)) <= 'Z') |
#define isasciixdigit | ( | c | ) |
Check whether character is hexadecimal digit in US-ASCII
c | character to check |
#define toasciilower | ( | 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.
c | character to convert |
#define toasciiupper | ( | 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.
c | character to convert |
#define todigitvalue | ( | c | ) |
Convert US-ASCII decimal digit to its value.
c | character to convert |
#define toxdigitvalue | ( | c | ) |
Convert US-ASCII hexadecimal digit to its value.
c | character to convert |
int MHD_str_equal_caseless_ | ( | const char * | str1, |
const char * | str2 | ||
) |
Check two strings for equality, ignoring case of US-ASCII letters.
str1 | first string to compare |
str2 | second string to compare |
Definition at line 380 of file mhd_str.c.
References charsequalcaseless.
bool MHD_str_equal_caseless_bin_n_ | ( | const char *const | str1, |
const char *const | str2, | ||
size_t | len | ||
) |
Check two string for equality, ignoring case of US-ASCII letters and checking exactly len characters. Compares exactly len characters, including binary zero characters.
str1 | first string to compare |
str2 | second string to compare |
len | number of characters to compare |
Definition at line 445 of file mhd_str.c.
References charsequalcaseless.
Referenced by add_user_headers(), MHD_check_response_header_token_ci(), MHD_del_response_header(), MHD_get_response_element_n_(), MHD_get_response_header(), MHD_lookup_connection_value_n(), MHD_lookup_header_token_ci(), and MHD_str_remove_tokens_caseless_().
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.
str1 | first string to compare |
str2 | second string to compare |
maxlen | maximum number of characters to compare |
Definition at line 414 of file mhd_str.c.
References charsequalcaseless.
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.
str | the string to check |
token | the token to find |
token_len | length of token, not including optional terminating null-character. |
Definition at line 478 of file mhd_str.c.
References charsequalcaseless.
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 | ||
) |
Remove case-insensitive token from the str and put result to the output buf.
Tokens in str could be surrounded by spaces and tabs and delimited by comma. The token match succeed if substring between start, end (of string) or comma contains only case-insensitive token and optional spaces and tabs. The quoted strings and comments are not supported by this function.
The output string is normalised: empty tokens and repeated whitespaces are removed, no whitespaces before commas, exactly one space is used after each comma.
str | the string to process | |
str_len | the length of the str, not including optional terminating null-character. | |
token | the token to find | |
token_len | the length of token, not including optional terminating null-character. | |
[out] | buf | the output buffer, not null-terminated. |
[in,out] | buf_size | pointer to the size variable, at input it is the size of allocated buffer, at output it is the size of the resulting string (can be up to 50% larger than input) or negative value if there is not enough space for the result |
< the "input" string / character
< the "output" string / character
< position of matched character in the token
< the first char of current token
Definition at line 553 of file mhd_str.c.
References charsequalcaseless, mhd_assert, and NULL.
Referenced by add_response_header_connection().
bool MHD_str_remove_tokens_caseless_ | ( | char * | str, |
size_t * | str_len, | ||
const char *const | tokens, | ||
const size_t | tokens_len | ||
) |
Perform in-place case-insensitive removal of tokens from the str.
Token could be surrounded by spaces and tabs and delimited by comma. The token match succeed if substring between start, end (of the string), or comma contains only case-insensitive token and optional spaces and tabs. The quoted strings and comments are not supported by this function.
The input string must be normalised: empty tokens and repeated whitespaces are removed, no whitespaces before commas, exactly one space is used after each comma. The string is updated in-place.
Behavior is undefined is the input string in not normalised.
[in,out] | str | the string to update |
[in,out] | str_len | the length of the str, not including optional terminating null-character, not null-terminated |
tokens | the token to find | |
tokens_len | the length of tokens, not including optional terminating null-character. |
< a short alias for tokens
< position in tokens
< the current token
< the 'read' position in the str
< the 'write' position in the str
Definition at line 720 of file mhd_str.c.
References mhd_assert, MHD_str_equal_caseless_bin_n_(), and NULL.
Referenced by add_response_header_connection(), and del_response_header_connection().
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.
str | string to convert | |
[out] | out_val | pointer to uint64_t to store result of conversion |
Definition at line 883 of file mhd_str.c.
References isasciidigit, and UINT64_MAX.
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.
str | string to convert | |
maxlen | maximum number of characters to process | |
[out] | out_val | pointer to uint64_t to store result of conversion |
Definition at line 925 of file mhd_str.c.
References isasciidigit, and UINT64_MAX.
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.
str | string to convert | |
[out] | out_val | pointer to uint32_t to store result of conversion |
Definition at line 968 of file mhd_str.c.
References toxdigitvalue, and UINT32_MAX.
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.
str | string to convert | |
maxlen | maximum number of characters to process | |
[out] | out_val | pointer to uint32_t to store result of conversion |
Definition at line 1015 of file mhd_str.c.
References toxdigitvalue, and UINT32_MAX.
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.
str | string to convert | |
[out] | out_val | pointer to uint64_t to store result of conversion |
Definition at line 1056 of file mhd_str.c.
References toxdigitvalue, and UINT64_MAX.
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.
str | string to convert | |
maxlen | maximum number of characters to process | |
[out] | out_val | pointer to uint64_t to store result of conversion |
Definition at line 1102 of file mhd_str.c.
References toxdigitvalue, and UINT64_MAX.
size_t MHD_uint16_to_str | ( | uint16_t | val, |
char * | buf, | ||
size_t | buf_size | ||
) |
Convert uint16_t value to decimal US-ASCII string.
val | the value to convert |
buf | the buffer to result to |
buf_size | size of the buffer |
< pointer to the current printed digit
Definition at line 1234 of file mhd_str.c.
References mhd_assert.
Referenced by build_header_response(), and get_date_str().
size_t MHD_uint32_to_strx | ( | uint32_t | val, |
char * | buf, | ||
size_t | buf_size | ||
) |
Convert uint32_t value to hexdecimal US-ASCII string.
val | the value to convert |
buf | the buffer to result to |
buf_size | size of the buffer |
< position of the output character
zero-based, digit position in 'val'
Definition at line 1202 of file mhd_str.c.
Referenced by try_ready_chunked_body().
size_t MHD_uint64_to_str | ( | uint64_t | val, |
char * | buf, | ||
size_t | buf_size | ||
) |
Convert uint64_t value to decimal US-ASCII string.
val | the value to convert |
buf | the buffer to result to |
buf_size | size of the buffer |
< pointer to the current printed digit
Definition at line 1275 of file mhd_str.c.
References mhd_assert.
Referenced by build_header_response().
size_t MHD_uint8_to_str_pad | ( | uint8_t | val, |
uint8_t | min_digits, | ||
char * | buf, | ||
size_t | buf_size | ||
) |
Convert uint16_t value to decimal US-ASCII string padded with zeros on the left side.
val | the value to convert |
min_digits | the minimal number of digits to print, output padded with zeros on the left side, 'zero' value is interpreted as 'one', valid values are 3, 2, 1, 0 |
buf | the buffer to result to |
buf_size | size of the buffer |
< the position of the current printed digit
Definition at line 1313 of file mhd_str.c.
References mhd_assert.
Referenced by get_date_str().